如何将变量从 EMR 集群传递到 Jupyter Notebook %%local 实例?

Posted

技术标签:

【中文标题】如何将变量从 EMR 集群传递到 Jupyter Notebook %%local 实例?【英文标题】:How to Pass Variable from EMR Cluster to Jupyter Notebook %%local Instance? 【发布时间】:2019-10-22 18:57:03 【问题描述】:

当我使用 %%local 在托管 Jupyter 笔记本实例上运行代码时,如何使用在 EMR 集群的 Python 实例中定义的变量?

具体来说,我想使用this question 中所示的matplotlib,并显示使用spark.sql() 生成的数据框的绘图。使用%%sql 让我可以轻松地使用%%local 中的数据结果,但我仍然需要将参数从EMR Python 实例传递给%%sql

例子:

ln[1]: parameter = 'Hello parameter'

ln[2]: %%local
       print(parameter)

我不断收到我的变量未定义的错误。

【问题讨论】:

【参考方案1】:

我找到了 2 个解决方法

使用%%spark -o df 将SQL 查询结果返回到可与%%local 一起使用的数据帧,如this answer 在不使用任何%% 魔术命令的情况下,像平常一样进行所有查询构建、执行和任何数据处理,然后使用df.createOrReplaceTempView("temp_table_name") 将最终数据写入我的数据库中的临时表。然后使用一个简单的查询来检索带有%%sql -q -o dfSELECT * FROM temp_table_name 的最终数据

【讨论】:

以上是关于如何将变量从 EMR 集群传递到 Jupyter Notebook %%local 实例?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 s3 数据从一个 EMR 集群读取到另一个 EMR 集群?

设置 Jupyter Pyspark 在 EC2 和 EMR 之间工作

无法访问 EMR 集群 jupyter notebook 中的 pyspark

toPandas() 在 Jupyter iPython Notebook 上工作,但提交失败 - AWS EMR

如何将 Spark EMR 集群与 AWS elasticsearch 集群连接起来

使用 boto3 将现有 EMR 集群克隆到新集群中