如何从本地运行的Spark Shell连接到Spark EMR

时间:2016-06-06 09:24:28

标签: apache-spark

我创建了一个Spark EMR集群。我想在我的localhost或EMR集群上执行作业。

假设我在本地计算机上运行spark-shell,如何告诉它连接到Spark EMR集群,准确的配置选项和/或命令是什么。

2 个答案:

答案 0 :(得分:2)

这样做的一种方法是将您的spark作业作为EMR步骤添加到EMR群集中。为此,您需要在本地计算机上安装AWS CLI (有关安装指南,请参阅here),以及s3上的jar文件。

一旦你有了aws cli,假设你运行的spark类是com.company.my.MySparkJob而你的jar文件位于s3://hadi/my-project-0.1.jar的s3上,你可以从你的终端运行以下命令:

aws emr add-steps --cluster-id j-************* --steps Type=spark,Name=My_Spark_Job,Args=[-class,com.company.my.MySparkJob,s3://hadi/my-project-0.1.jar],ActionOnFailure=CONTINUE

答案 1 :(得分:1)

看起来其他人也在此失败并最终在EMR上运行Spark驱动程序,但随后利用例如Zeppelin或Jupyter在EMR上运行。

  

将我们自己的机器设置为连接到EMR核心节点的火花驱动器将是理想的选择。不幸的是,这是不可能做到的,我们在尝试许多配置更改后没收了。驱动程序将启动,然后等待失败,尝试连接到从属设备。

     

我们的大部分Spark开发都在使用Jupyter Notebook作为IDE的pyspark。由于我们必须从主节点运行Jupyter,因此如果群集崩溃,我们就不会冒失去工作的风险。因此,我们创建了一个EBS卷并将其附加到主节点,并将我们的所有工作放在此卷上。 [...]

source

注意:如果您沿着这条路走下去,我会考虑使用S3来存储笔记本电脑,那么您就不必管理EBS卷。