Hive / Tez Parquet Ошибка только во время подзапросов - PullRequest
0 голосов
/ 12 февраля 2020

Мы получаем ошибку при выполнении определенных запросов с использованием Tez в Hive:

Caused by: java.lang.RuntimeException: java.io.IOException: java.io.IOException: can not read class org.apache.parquet.format.PageHeader: Required field 'uncompressed_page_size' was not found in serialized data! Struct: PageHeader(type:
null, uncompressed_page_size:0, compressed_page_size:0)
        at org.apache.hadoop.mapred.split.TezGroupedSplitsInputFormat$TezGroupedSplitsRecordReader.initNextRecordReader(TezGroupedSplitsInputFormat.java:206)
        at org.apache.hadoop.mapred.split.TezGroupedSplitsInputFormat$TezGroupedSplitsRecordReader.<init>(TezGroupedSplitsInputFormat.java:145)
        at org.apache.hadoop.mapred.split.TezGroupedSplitsInputFormat.getRecordReader(TezGroupedSplitsInputFormat.java:111)
        at org.apache.tez.mapreduce.lib.MRReaderMapred.setupOldRecordReader(MRReaderMapred.java:157)
        at org.apache.tez.mapreduce.lib.MRReaderMapred.setSplit(MRReaderMapred.java:83)
        at org.apache.tez.mapreduce.input.MRInput.initFromEventInternal(MRInput.java:703)
        at org.apache.tez.mapreduce.input.MRInput.initFromEvent(MRInput.java:662)
        at org.apache.tez.mapreduce.input.MRInputLegacy.checkAndAwaitRecordReaderInitialization(MRInputLegacy.java:150)
        at org.apache.tez.mapreduce.input.MRInputLegacy.init(MRInputLegacy.java:114)
        at org.apache.hadoop.hive.ql.exec.tez.MapRecordProcessor.getMRInput(MapRecordProcessor.java:525)
        at org.apache.hadoop.hive.ql.exec.tez.MapRecordProcessor.init(MapRecordProcessor.java:171)
        at org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor(TezProcessor.java:184)

Это происходит только тогда, когда мы берем указанную c таблицу и используем ее в подзапросе. Если переписать запрос так, чтобы он был только на одной стороне соединения, то он работает нормально. Я понимаю, что неоптимально использовать его в подзапросах, но все равно неожиданно вести себя так, чтобы это было ошибкой.

Если подробности помогают, все наши таблицы в формате S3 (в формате Parquet), и мы выполняем все это в Amazon EMR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...