我正在尝试向我的Python 3笔记本(在本地笔记本电脑上运行)中在GCP中运行的独立spark(2.1.1)集群3 VM提交spark应用程序但由于某种原因,spark会话抛出错误" StandaloneAppClient $ ClientEndpoint:无法连接到主sparkmaster:7077"。
环境详细信息:IPython和Spark Master在一个名为" sparkmaster"的GCP VM中运行。另外3个GCP VM正在运行Spark Slaves和Cassandra Clusters。我使用Chrome从本地笔记本电脑(MBP)连接到GCP VM IPython笔记本电脑" sparkmaster"
请注意终端有效:
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 Notebook运行它:
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()
到目前为止,我已尝试过这些:
我尝试更改spark主节点spark-defaults.conf和spark-env.sh以添加SPARK_MASTER_IP。
试图找到STANDALONE_SPARK_MASTER_HOST =主机名-f设置,以便我可以删除" -f"。出于某种原因,我的火花大师ui显示FQDN:7077不是主机名:7077
将FQDN作为参数传递给.master()和os.environ [" PYSPARK_SUBMIT_ARGS"]
如果您需要更多详细信息,请与我们联系。
答案 0 :(得分:0)
在做了一些研究后,我能够解决冲突。这是由于一个名为SPARK_HOME的简单环境变量。在我的情况下,它指向Conda的/ bin(pyspark从这个位置运行),而我的火花设置存在于差异中。路径。简单的解决方法是添加 将SPARK_HOME =“/ home /<> / spark /”导出到.bashrc文件(我希望将其附加到我的个人资料而不是火花会话)
我是如何做到的:
步骤1:在我的情况下ssh到主节点它与GCP中的ipython内核/服务器VM相同
第2步:
注意:为了清楚起见,我还在环境部分添加了更多细节。