【问题标题】:Presto query raising error - StageStateMachine NullPointer when executing SELECT *Presto 查询引发错误 - 执行 SELECT * 时的 StageStateMachine NullPointer
【发布时间】:2017-04-01 14:54:03
【问题描述】:

我正在将 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)

我可以使用以下命令轻松查询 hive 中的结果:

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 能够查询 hive 表,因为我可以做到:

select count(1) from table_a

select column_name from table_a

我的第一个选择有什么问题?

【问题讨论】:

  • 看起来像文件阅读器中的错误。您使用的是什么文件格式?
  • 我正在使用 PARQUET 文件,但问题仍然存在于 ORC 文件中

标签: hadoop hive parquet presto


【解决方案1】:

我发现了问题。

当我定义我的配置单元create table 时,我添加了一个在我的文件中尚不存在的字段(它很快就会存在)。

使用 Presto,我可以为表的所有字段添加 select column_name from table_a,不包括缺少的字段(这解释了为什么 select * from table_a 不起作用)。

Hive 通过在查询结果中填充 null 值来处理文件中缺少的参数。 Presto 试图找到该字段,并提出NullPointerException

机器版本: Hive 2.1.0, Spark 2.0.1, Presto 0.152.3

编辑:

添加这两个标志(一个用于兽人,另一个用于镶木地板):

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

hive.properties:

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

【讨论】:

    猜你喜欢
    • 2013-11-26
    • 2022-11-08
    • 2021-05-09
    • 1970-01-01
    • 2017-05-01
    • 2021-11-25
    • 2018-10-05
    • 1970-01-01
    • 2017-06-25
    相关资源
    最近更新 更多