我无法使用EMR上的Hue / Zeppelin中的pySpark访问Glue Data Catalog中的表格。我试过了emr-5.13.0和emr-5.12.1。
我试过关注https://github.com/aws-samples/aws-glue-samples/blob/master/examples/data_cleaning_and_lambda.md
但是在尝试导入GlueContext时,错误显示为No module named awsglue.context.
另一个注意事项是,当执行spark.sql("SHOW TABLES").show()
时,它对于Hue / Zeppelin来说是空的,但是当在主节点上使用pyspark shell时,我能够从Glue数据目录中查看和查询该表。
非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
请从AWS查看此链接中的详细信息,并查看EMR是否按照建议(Configure Glue Catalog in EMR)正确配置。还要确保授予访问AWS Glue目录的适当权限。详细信息在附件中。希望这会有所帮助。
答案 1 :(得分:0)
好的,我花了一些时间来模拟这个问题,所以我提出了一个EMR,用#34;使用AWS Glue Data Catalog来表格元数据"启用。启用Web连接后,在zeppelin中我发布了show databases命令,它运行正常。请在此处找到命令&齐柏林的输出:
%spark
spark.sql("show databases").show
+-------------------+
|airlines-historical|
| default|
| glue-poc-tpch|
| legislator-new|
| legislators|
| nursinghomedb|
| nycitytaxianalysis|
| ohare-airport-2006|
| payments|
| s100g|
| s1g|
| sampledb|
| testdb|
| tpch|
| tpch_orc|
| tpch_parquet|
+-------------------+
至于您的另一期" 没有名为awsglue.context的模块",我认为使用EMR委托的Zeppelin可能无法实现。我认为可以访问/使用awsglue.context的唯一方法是通过您可能需要在AWS Glue中设置的Glue Devendpoint,然后使用胶水jupyter笔记本或连接胶水开发的本地安装的Zeppelin笔记本端点。
我不确定是否可以从EMR委托的Zeppelin笔记本直接访问胶水上下文,可能是错误的。
您仍然可以访问胶水目录,因为EMR为您提供了相同的选项,因此您可以访问数据库并执行ETL作业。
感谢。