presto查询引发错误-执行select时stagestatemachine nullpointer*

mzillmmw  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(560)

我正在将Parquet文件从s3加载到我的hive数据仓库,该数据仓库在emr机器中运行: Release: emr-5.1.0 Hadoop distribution: Amazon 2.7.3 Applications: Hive 2.1.0, Spark 2.0.1, Presto 0.152.3) 我可以使用以下工具轻松查询配置单元中的结果: select * from table_a 但是,当我使用presto尝试相同的查询时,会出现以下错误:

ERROR   remote-task-callback-57 com.facebook.presto.execution.StageStateMachine Stage 20161117_211631_00018_29xwg.1 failed
java.lang.NullPointerException
    at com.facebook.presto.spi.RecordPageSource.getNextPage(RecordPageSource.java:124)
    at com.facebook.presto.operator.TableScanOperator.getOutput(TableScanOperator.java:246)
    at com.facebook.presto.operator.Driver.processInternal(Driver.java:378)
    at com.facebook.presto.operator.Driver.processFor(Driver.java:301)
    at com.facebook.presto.execution.SqlTaskExecution$DriverSplitRunner.processFor(SqlTaskExecution.java:622)
    at com.facebook.presto.execution.TaskExecutor$PrioritizedSplitRunner.process(TaskExecutor.java:529)
    at com.facebook.presto.execution.TaskExecutor$Runner.run(TaskExecutor.java:665)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

我知道我的presto能够查询配置单元表,因为我可以: select count(1) from table_aselect column_name from table_a 我的第一个选择有什么问题?

92vpleto

92vpleto1#

我发现了问题。
当我定义我的Hive create table 我添加了一个在我的文件中还不存在的字段(它很快就会存在)。
使用presto我可以 select column_name from table_a 对于表中的所有字段,不包括缺少的字段(为什么 select * from table_a 不起作用)。
hive通过在文件中填充 null 查询结果的值。普雷斯托试图找到这个领域,并提出了一个建议 NullPointerException .
机器版本: Hive 2.1.0, Spark 2.0.1, Presto 0.152.3 编辑:
添加这两个标志(一个用于兽人,另一个用于Parquet):

hive.parquet.use-column-names = true
hive.orc.use-column-names = true

hive.properties :

/etc/presto/conf/catalog/hive.properties #path on emr

相关问题