Jupyter + EMR + Spark - 从本地机器上的 Jupyter notebook 连接到 EMR 集群

Posted

技术标签:

【中文标题】Jupyter + EMR + Spark - 从本地机器上的 Jupyter notebook 连接到 EMR 集群【英文标题】:Jupyter + EMR + Spark - Connect to EMR cluster from Jupyter notebook on local machine 【发布时间】:2017-06-28 11:12:56 【问题描述】:

我是 PySpark 和 EMR 的新手。 我正在尝试通过 Jupyter notebook 访问在 EMR 集群上运行的 Spark,但遇到了错误。

我正在使用以下代码生成 SparkSession:

spark = SparkSession.builder \
    .master("local[*]")\
    .appName("Carbon - SingleWell parallelization on Spark")\
    .getOrCreate()

尝试如下访问远程集群,但报错:

spark = SparkSession.builder \
    .master("spark://<remote-emr-ec2-hostname>:7077")\
    .appName("Carbon - SingleWell parallelization on Spark")\
    .getOrCreate()

错误:

Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: java.lang.NullPointerException
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:567)
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

任何解决此问题的帮助将不胜感激。

【问题讨论】:

【参考方案1】:

EMR 集群为您配置了 Jupyter 和 JupyterHub since EMR version 5.14.0。

很可能,通过一些额外的引导操作tune those provisioned services up 比连接本地进程与 EMR 主节点对话更容易。

【讨论】:

以上是关于Jupyter + EMR + Spark - 从本地机器上的 Jupyter notebook 连接到 EMR 集群的主要内容,如果未能解决你的问题,请参考以下文章

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

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

如何在 jupyter notebook 中将 spark 数据帧写入 avro 文件格式?

从 EMR spark 连接到 EMR presto - 连接失败

在 emr 中使用 spark 从 S3 读取 avro 失败

从 EMR 迁移到 AWS Glue 后在 Spark SQL 中找不到表