[ https://issues.apache.org/jira/browse/PARQUET-2103?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17448596#comment-17448596 ]
Gidon Gershinsky commented on PARQUET-2103: ------------------------------------------- [~gszadovszky] thanks for pointing in the right direction. We can check that a file is encrypted, and then skip printing its column metadata - this solves the problem at hand. We will still be able to print the file-wide metadata (as opposed to the per-column metadata, which is encrypted with column-specific keys). I'll start working on a patch. > crypto exception in print toPrettyJSON > -------------------------------------- > > Key: PARQUET-2103 > URL: https://issues.apache.org/jira/browse/PARQUET-2103 > Project: Parquet > Issue Type: Bug > Components: parquet-mr > Affects Versions: 1.12.0, 1.12.1, 1.12.2 > Reporter: Gidon Gershinsky > Priority: Major > > In debug mode, this code > {{if (LOG.isDebugEnabled()) {}} > {{ LOG.debug(ParquetMetadata.toPrettyJSON(parquetMetadata));}} > {{}}} > called in > {{org.apache.parquet.format.converter.ParquetMetadataConverter.readParquetMetadata()}} > > _*in encrypted files with plaintext footer*_ > triggers an exception: > > {{Caused by: org.apache.parquet.crypto.ParquetCryptoRuntimeException: [id]. > Null File Decryptor }} > {{ at > org.apache.parquet.hadoop.metadata.EncryptedColumnChunkMetaData.decryptIfNeeded(ColumnChunkMetaData.java:602) > ~[parquet-hadoop-1.12.0jar:1.12.0]}} > {{ at > org.apache.parquet.hadoop.metadata.ColumnChunkMetaData.getEncodingStats(ColumnChunkMetaData.java:353) > ~[parquet-hadoop-1.12.0jar:1.12.0]}} > {{ at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > ~[?:?]}} > {{ at > jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > ~[?:?]}} > {{ at > jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[?:?]}} > {{ at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:689) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1516) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ObjectWriter._writeValueAndClose(ObjectWriter.java:1217) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > shaded.parquet.com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1059) > ~[parquet-jackson-1.12.0jar:1.12.0]}} > {{ at > org.apache.parquet.hadoop.metadata.ParquetMetadata.toJSON(ParquetMetadata.java:68) > ~[parquet-hadoop-1.12.0jar:1.12.0]}} > {{ ... 23 more}} -- This message was sent by Atlassian Jira (v8.20.1#820001)