我有一个带有 Spark(v2.2.1) 的 AWS EMR 集群 (v5.11.1),并尝试使用 AWS Glue 数据目录作为其元存储。根据官方 AWS 文档(下面的参考链接)中提供的指南,我已按照这些步骤操作,但在访问 Glue 目录数据库/表时遇到了一些差异。EMR 集群和 AWS Glue 都在同一个账户中,并提供了适当的 IAM 权限。
AWS 文档:https : //docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html
观察:
- 使用 spark-shell(来自 EMR 主节点):
- 作品。能够使用以下命令访问 Glue DB/Tables:
Run Code Online (Sandbox Code Playgroud)spark.catalog.setCurrentDatabase("test_db") spark.catalog.listTables- 使用 spark-submit(来自 EMR 步骤):
- 不起作用。不断收到错误“数据库'test_db'不存在”
错误跟踪如下:
INFO HiveClientImpl:Hive 客户端(版本 1.2.1)的仓库位置是 hdfs:///user/spark/warehouse
INFO HiveMetaStore: 0: get_database: 默认
INFO audit: ugi=hadoop ip=unknown-ip-addr cmd=get_database:默认
信息 HiveMetaStore:0:get_database:global_temp
信息审计:ugi=hadoop ip=unknown-ip-addr cmd=get_database:global_temp
WARN ObjectStore:无法获取数据库 global_temp,返回 NoSuchObjectException
INFO SessionState:创建的本地目录:/mnt3/yarn/ usercache / Hadoop的/应用程序缓存/ application_1547055968446_0005 / container_1547055968446_0005_01_000001的/ …
amazon-emr apache-spark aws-glue hive-metastore aws-glue-data-catalog