PySpark访问胶水数据目录

时间:2018-04-16 21:37:24

标签: apache-spark pyspark aws-glue

我无法使用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数据目录中查看和查询该表。

非常感谢任何帮助,谢谢!

2 个答案:

答案 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作业。

感谢。