Amazon emr Presto Glue EMR集成:Presto cli提供NullPointerException

Amazon emr Presto Glue EMR集成:Presto cli提供NullPointerException,amazon-emr,aws-glue,presto,trino,Amazon Emr,Aws Glue,Presto,Trino,我正在尝试将我的胶水目录连接到EMR中的Presto和Hive。在presto cli中运行查询时,我得到NullPointerException,而在hive cli中相同的查询成功。 如下所示启动cli presto-cli --catalog hive 执行查询时出现异常: Query 20180814_174636_00003_iika5 failed: java.lang.NullPointerException: parameters is null EMR配置如下所示: [

我正在尝试将我的胶水目录连接到EMR中的Presto和Hive。在presto cli中运行查询时,我得到NullPointerException,而在hive cli中相同的查询成功。

如下所示启动cli

presto-cli --catalog hive
执行查询时出现异常:

Query 20180814_174636_00003_iika5 failed: java.lang.NullPointerException: parameters is null
EMR配置如下所示:

[
    {
        "classification": "presto-connector-hive",
        "properties": {
            "hive.metastore": "glue"
        },
        "configurations": []
    },
    {
        "classification": "hive-site",
        "properties": {
            "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"
        },
        "configurations": []
    }
]
EMR版本:
5.16.0
Presto版本:
0.203

参考文件:

调试日志

Query 20180816_060942_00001_m9i52 failed: java.lang.NullPointerException: parameters is null
com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException: parameters is null
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2052)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3943)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3967)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4952)
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4958)
    at com.facebook.presto.hive.metastore.CachingHiveMetastore.get(CachingHiveMetastore.java:207)
    at com.facebook.presto.hive.metastore.CachingHiveMetastore.getPartitionNamesByParts(CachingHiveMetastore.java:499)
    at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.doGetPartitionNames(SemiTransactionalHiveMetastore.java:467)
    at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.getPartitionNamesByParts(SemiTransactionalHiveMetastore.java:445)
    at com.facebook.presto.hive.HivePartitionManager.getFilteredPartitionNames(HivePartitionManager.java:284)
    at com.facebook.presto.hive.HivePartitionManager.getPartitions(HivePartitionManager.java:146)
    at com.facebook.presto.hive.HiveMetadata.getTableLayouts(HiveMetadata.java:1305)
    at com.facebook.presto.spi.connector.classloader.ClassLoaderSafeConnectorMetadata.getTableLayouts(ClassLoaderSafeConnectorMetadata.java:73)
    at com.facebook.presto.metadata.MetadataManager.getLayouts(MetadataManager.java:346)
    at com.facebook.presto.sql.planner.iterative.rule.PickTableLayout.planTableScan(PickTableLayout.java:203)
    at com.facebook.presto.sql.planner.iterative.rule.PickTableLayout.access$200(PickTableLayout.java:61)
    at com.facebook.presto.sql.planner.iterative.rule.PickTableLayout$PickTableLayoutWithoutPredicate.apply(PickTableLayout.java:186)
    at com.facebook.presto.sql.planner.iterative.rule.PickTableLayout$PickTableLayoutWithoutPredicate.apply(PickTableLayout.java:153)
    at com.facebook.presto.sql.planner.iterative.IterativeOptimizer.transform(IterativeOptimizer.java:168)
    at com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreNode(IterativeOptimizer.java:141)
    at com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreGroup(IterativeOptimizer.java:104)
    at com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreChildren(IterativeOptimizer.java:193)
    at com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreGroup(IterativeOptimizer.java:106)
    at com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreChildren(IterativeOptimizer.java:193)
    at com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreGroup(IterativeOptimizer.java:106)
    at com.facebook.presto.sql.planner.iterative.IterativeOptimizer.optimize(IterativeOptimizer.java:95)
    at com.facebook.presto.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:140)
    at com.facebook.presto.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:129)
    at com.facebook.presto.execution.SqlQueryExecution.doAnalyzeQuery(SqlQueryExecution.java:327)
    at com.facebook.presto.execution.SqlQueryExecution.analyzeQuery(SqlQueryExecution.java:312)
    at com.facebook.presto.execution.SqlQueryExecution.start(SqlQueryExecution.java:268)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException: parameters is null
    at java.util.Objects.requireNonNull(Objects.java:228)
    at com.facebook.presto.hive.metastore.Partition.<init>(Partition.java:54)
    at com.facebook.presto.hive.metastore.Partition$Builder.build(Partition.java:180)
    at com.facebook.presto.hive.metastore.glue.converter.GlueToPrestoConverter.convertPartition(GlueToPrestoConverter.java:141)
    at com.facebook.presto.hive.metastore.glue.GlueHiveMetastore.lambda$getPartitions$8(GlueHiveMetastore.java:558)
    at java.util.ArrayList.forEach(ArrayList.java:1257)
    at com.facebook.presto.hive.metastore.glue.GlueHiveMetastore.getPartitions(GlueHiveMetastore.java:558)
    at com.facebook.presto.hive.metastore.glue.GlueHiveMetastore.getPartitionNamesByParts(GlueHiveMetastore.java:541)
    at com.facebook.presto.hive.metastore.CachingHiveMetastore.loadPartitionNamesByParts(CachingHiveMetastore.java:504)
    at com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:165)
    at com.google.common.cache.CacheLoader$1.load(CacheLoader.java:188)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2273)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2156)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2046)
    ... 33 more
查询20180816\u 060942\u 00001\u m9i52失败:java.lang.NullPointerException:参数为null
com.google.common.util.concurrent.UncheckedExecutionException:java.lang.NullPointerException:参数为null
位于com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2052)
位于com.google.common.cache.LocalCache.get(LocalCache.java:3943)
位于com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3967)
位于com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4952)
位于com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4958)
访问com.facebook.presto.hive.metastore.CachingHiveMetastore.get(CachingHiveMetastore.java:207)
位于com.facebook.presto.hive.metastore.CachingHiveMetastore.getPartitionNamesByParts(CachingHiveMetastore.java:499)
在com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.doGetPartitionNames(SemiTransactionalHiveMetastore.java:467)上
位于com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.getPartitionNamesByParts(SemiTransactionalHiveMetastore.java:445)
在com.facebook.presto.hive.HivePartitionManager.getFilteredPartitionNames上(HivePartitionManager.java:284)
位于com.facebook.presto.hive.HivePartitionManager.getPartitions(HivePartitionManager.java:146)
位于com.facebook.presto.hive.HiveMetadata.getTableLayouts(HiveMetadata.java:1305)
在com.facebook.presto.spi.connector.classloader.classloadersafeconnectormatadata.getTableLayouts(classloadersafeconnectormatadata.java:73)
位于com.facebook.presto.metadata.MetadataManager.getLayouts(MetadataManager.java:346)
在com.facebook.presto.sql.planner.iterative.rule.PickTableLayout.planTableScan(PickTableLayout.java:203)上
在com.facebook.presto.sql.planner.iterative.rule.PickTableLayout.access$200(PickTableLayout.java:61)
在com.facebook.presto.sql.planner.iterative.rule.PickTableLayout$PickTableLayoutWithoutPredicate.apply(PickTableLayout.java:186)上
在com.facebook.presto.sql.planner.iterative.rule.PickTableLayout$PickTableLayoutWithoutPredicate.apply(PickTableLayout.java:153)上
在com.facebook.presto.sql.planner.iterative.IterativeOptimizer.transform(IterativeOptimizer.java:168)上
在com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreNode(IterativeOptimizer.java:141)上
在com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreGroup(IterativeOptimizer.java:104)上
在com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreChildren(IterativeOptimizer.java:193)上
在com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreGroup(IterativeOptimizer.java:106)上
在com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreChildren(IterativeOptimizer.java:193)上
在com.facebook.presto.sql.planner.iterative.IterativeOptimizer.exploreGroup(IterativeOptimizer.java:106)上
在com.facebook.presto.sql.planner.iterative.IterativeOptimizer.optimize上(IterativeOptimizer.java:95)
在com.facebook.presto.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:140)上
在com.facebook.presto.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:129)上
在com.facebook.presto.execution.SqlQueryExecution.doanalyzery上(SqlQueryExecution.java:327)
在com.facebook.presto.execution.SqlQueryExecution.analyzeQuery(SqlQueryExecution.java:312)上
在com.facebook.presto.execution.SqlQueryExecution.start(SqlQueryExecution.java:268)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
运行(Thread.java:748)
原因:java.lang.NullPointerException:参数为null
位于java.util.Objects.requirennull(Objects.java:228)
位于com.facebook.presto.hive.metastore.Partition.(Partition.java:54)
位于com.facebook.presto.hive.metastore.Partition$Builder.build(Partition.java:180)
位于com.facebook.presto.hive.metastore.glue.converter.GlueToPrestoConverter.convertPartition(GlueToPrestoConverter.java:141)
在com.facebook.presto.hive.metastore.glue.GlueHiveMetastore.lambda$getPartitions$8(GlueHiveMetastore.java:558)
forEach(ArrayList.java:1257)
在com.facebook.presto.hive.metastore.glue.GlueHiveMetastore.getPartitions上(GlueHiveMetastore.java:558)
在com.facebook.presto.hive.metastore.glue.GlueHiveMetastore.getPartitionNamesByParts(GlueHiveMetastore.java:541)上
位于com.facebook.presto.hive.metastore.CachingHiveMetastore.loadPartitionNamesByParts(CachingHiveMetastore.java:504)
在com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:165)上
位于com.google.common.cache.CacheLoader$1.load(CacheLoader.java:188)
在com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524)
位于com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2273)
在com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2156)
位于com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2046)
... 33多

似乎presto 0.203有这个错误,我也遇到了,我换了一个新版本,它成功了


在我写这个答案的时候,EMR 5.17发布了,它的presto 0.206解决了这个问题。

0.23.0
看起来不像presto版本。你能再检查一下你使用的Presto版本吗?我们到了