从Python笔记本中将应用程序提交给在GCP中运行的独立火花集群



我试图将火花申请提交给独立火花(2.1.1(群集3 vm在我的python 3笔记本中运行的GCP(在本地笔记本电脑中运行(,但由于某种原因,Spark Spark Spark会话正在抛出错误" standaloneAppclient $ clientendpoint:无法连接到主Sparkmaster:7077&quort"。

环境详细信息:Ipython和Spark Master在一个GCP VM中运行,称为" Sparkmaster"。3个额外的GCP VM正在运行火花工人和Cassandra集群。我使用Chrome从本地笔记本电脑(MBP(连接到" Sparkmaster"中的GCP VM ipython笔记本

请注意,终端有效:

bin/spark-submit --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.1.1 --master spark://sparkmaster:7077 ex.py 1000

从python笔记本上运行它:

import os
os.environ["PYSPARK_SUBMIT_ARGS"] = '--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.1.1 pyspark-shell'
from pyspark.sql import SparkSession
from pyspark.sql.functions import *
spark=SparkSession.builder.master("spark://sparkmaster:7077").appName('somatic').getOrCreate() #This step works if make .master('local')
df = spark 
  .readStream 
  .format("kafka") 
  .option("kafka.bootstrap.servers", "kafka1:9092,kafka2:9092,kafka3:9092") 
  .option("subscribe", "gene") 
  .load()

到目前为止,我已经尝试了这些:

  1. 我试图更改Spark Master Noce Noce spark-defaults.conf和spark-env.sh以添加spark_master_ip。

  2. 试图找到standalone_spark_master_host = hostName -f设置,以便我可以删除-f&quort'。由于某种原因,我的Spark Master UI显示FQDN:7077不主机名:7077

  3. 将fqdn作为param传递给.master((和os.environ [pyspark_submit_args&quort]

请让我知道您是否需要更多详细信息。

进行了更多研究后,我能够解决冲突。这是由于一个简单的环境变量称为spark_home。就我而言,这是指Conda的/垃圾箱(Pyspark从这个位置运行(,而我的Spark设置则存在于DIFF中。小路。简单的修复是添加 export SPARK_HOME="/home/<<your location path>>/spark/" to .bashrc文件(我希望将其连接到我的个人资料,而不是Spark会话(

我是如何完成的:

步骤1:ssh to master节点在我的情况下,它与gcp

中的ipython内核/服务器VM相同

步骤2:

  • CD〜
  • sudo nano .bashrc
  • 向下滚动到最后一行并粘贴以下行
  • 导出spark_home =&quot; your/your/path/to/spark-2.1.1-bin-hadoop2.7/&quot;
  • ctrlx和y并输入以保存更改

注意:为了清楚起见,我还为环境部分添加了更多详细信息。

最新更新