apache / apache/parquet-java

parquet-cli with hadoop throws java.lang.RuntimeException on any parquet file access

オープン
#2,681 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る
Component: CLI Component: Parquet Priority: Blocker Type: bug
主要言語
Java
スター
3.1k
フォーク
1.6k
平均マージ
3日 12時間
マージ済み PR(30日)
33

説明

I can't do even basic things with parquet-cli from 1.13.0-SNAPSHOT.
```

git clone  
cd parquet-mr
mvn clean install -DskipTests
cd parquet-cli
mvn clean install -DskipTests
cd target
hadoop jar parquet-cli-1.13.0-SNAPSHOT-runtime.jar org.apache.parquet.cli.Main cat
```
Results:
```

Unknown error
java.lang.RuntimeException: Failed on record 0
    at org.apache.parquet.cli.commands.CatCommand.run(CatCommand.java:86)
    at org.apache.parquet.cli.Main.run(Main.java:157)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
    at org.apache.parquet.cli.Main.main(Main.java:187)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
Caused by: org.apache.parquet.io.ParquetDecodingException: Can not read value at 0 in block -1 in file file:/home/theosib/guid.parquet
    at org.apache.parquet.hadoop.InternalParquetRecordReader.nextKeyValue(InternalParquetRecordReader.java:264)
    at org.apache.parquet.hadoop.ParquetReader.read(ParquetReader.java:132)
    at org.apache.parquet.hadoop.ParquetReader.read(ParquetReader.java:136)
    at org.apache.parquet.cli.BaseCommand$1$1.advance(BaseCommand.java:363)
    at org.apache.parquet.cli.BaseCommand$1$1.(BaseCommand.java:344)
    at org.apache.parquet.cli.BaseCommand$1.iterator(BaseCommand.java:342)
    at org.apache.parquet.cli.commands.CatCommand.run(CatCommand.java:73)
    ... 9 more
Caused by: org.apache.parquet.io.ParquetDecodingException: The requested schema is not compatible with the file schema. incompatible types: required binary Number (STRING) != required fixed_len_byte_array(16) Number (UUID)
    at org.apache.parquet.io.ColumnIOFactory$ColumnIOCreatorVisitor.incompatibleSchema(ColumnIOFactory.java:101)
    at org.apache.parquet.io.ColumnIOFactory$ColumnIOCreatorVisitor.visit(ColumnIOFactory.java:93)
    at org.apache.parquet.schema.PrimitiveType.accept(PrimitiveType.java:602)
    at org.apache.parquet.io.ColumnIOFactory$ColumnIOCreatorVisitor.visitChildren(ColumnIOFactory.java:83)
    at org.apache.parquet.io.ColumnIOFactory$ColumnIOCreatorVisitor.visit(ColumnIOFactory.java:57)
    at org.apache.parquet.schema.MessageType.accept(MessageType.java:55)
    at org.apache.parquet.io.ColumnIOFactory.getColumnIO(ColumnIOFactory.java:162)
    at org.apache.parquet.hadoop.InternalParquetRecordReader.checkRead(InternalParquetRecordReader.java:140)
    at org.apache.parquet.hadoop.InternalParquetRecordReader.nextKeyValue(InternalParquetRecordReader.java:230)
    ... 15 more
```

**Environment**: Amazon Linux 2, Java 8, Hadoop 3.2.3
**Reporter**: [Timothy Miller](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=theosib-amazon) / @theosib-amazon

**Note**: *This issue was originally created as [PARQUET-2143](https://issues.apache.org/jira/browse/PARQUET-2143). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

報告された Parquet ファイルを使って hadoop の呼び出しを再現し、次に parquet-cli/src/main/java/org/apache/parquet/cli/commands/CatCommand.java と InternalParquetRecordReader の読み取り経路から調査を始めてください。ColumnIOFactory を通じてスキーマの不一致を追跡し、報告された UUID フィールドに対して意図されている処理を特定してください。報告された parquet-cli のアクセスが RuntimeException で失敗しなくなり、その動作に対するリグレッションテストのカバレッジが追加されていれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
hadoop, java
領域
cli, data-engineering
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。