2016-11-17 69 views
0

我从S3加载拼花文件到我的蜂房数据仓库,这是一个EMR机内运行:普雷斯托查询募集错误 - 执行时StageStateMachine空指针SELECT *

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) 

我知道我急就能够查询蜂巢表,因为我可以做的:

select count(1) from table_a

select column_name from table_a

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

+0

看起来像文件阅读器中的错误。你使用什么文件格式? –

+0

我正在使用'PARQUET'文件,但问题仍然存在'ORC'文件 –

回答

0

我发现了这个问题。

当我定义我的配置单元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

编辑:

添加这两个标志(一个兽人和其他木地板):

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

hive.properties

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