我已经创建了一个EMR集群,并在我的spark配置中指定了以下内容:
hive.metastore.glue.role.arn: arn:aws:iam::omitted:role/EMR_DefaultRole
我可以确认已从AWS中的EMR控制台正确设置了该值:
在我的作业运行逻辑中,我执行
spark.sql("show databases").show()
这将生成以下日志:
22/10/22 01:18:18 WARN HiveConf: HiveConf of name hive.metastore.glue.role.arn does not exist
22/10/22 01:18:18 ERROR AWSGlueClientFactory: Unable to build AWSGlueClient: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
22/10/22 01:18:18 WARN Hive: Failed to access metastore. This class should not accessed in runtime.
org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Unable to build AWSGlueClient: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException)
at org.apache.hadoop.hive.ql.metadata.Hive.getAllDatabases(Hive.java:1237)
at org.apache.hadoop.hive.ql.metadata.Hive.reloadFunctions(Hive.java:175)
at org.apache.hadoop.hive.ql.metadata.Hive.<clinit>(Hive.java:167)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:503)
at org.apache.spark.sql.hive.client.HiveClientImpl.newState(HiveClientImpl.scala:183)
at org.apache.spark.sql.hive.client.HiveClientImpl.<init>(HiveClientImpl.scala:117)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
...
看起来我的Glue客户机无法被示例化,因为在我的conf中找不到glue角色ARN。
我真的非常感谢你在这方面的一些想法,或者任何调试建议。任何有帮助的东西--提前感谢:)
1条答案
按热度按时间v09wglhw1#
尝试使用
hive.metastore.client.factory.class
属性将com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory
类设置为元存储客户机工厂。有关使用代码的配置的完整示例,请参阅Metastore configuration文档页;使用
spark-hive-site
分类的配置,请参阅Use the AWS Glue Data Catalog as the metastore for Spark SQL页。另外,请注意,在第一种情况下,您需要在属性名称前加上spark.hadoop.
前缀。