从python笔记本向gcp中运行的独立spark集群提交应用程序

pkwftd7m  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(381)

我正试图从Python3笔记本电脑(在本地笔记本电脑上运行)向gcp中运行的独立spark(2.1.1)cluster 3虚拟机提交spark应用程序,但由于某些原因,spark会话引发错误“standaloneappclient$clientendpoint:无法连接到主sp”arkmaster:7077".
环境细节:ipython和spark master在一个名为“sparkmaster”的gcp虚拟机中运行。另外3个gcp虚拟机运行spark从属和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()

到目前为止,我已经尝试了以下方法:
我尝试更改spark master节点spark-defaults.conf和spark-env.sh以添加spark\ master\ ip。
试图找到独立的\u spark\u master\u host=hostname-f设置,以便删除“-f”。出于某种原因,我的spark master ui显示fqdn:7077 not hostname:7077
已将fqdn作为参数传递给.master()和os.environ[“pyspark\u submit\u args”]
如果你需要更多的细节,请告诉我。

bsxbgnwa

bsxbgnwa1#

在做了更多的研究之后,我终于解决了冲突。这是由于一个简单的环境变量称为spark\u home。在我的例子中,它指向conda的/bin(pyspark是从这个位置运行的),而我的spark设置在一个不同的路径中。简单的解决方法是将export spark\u home=“/home/<>/spark/”添加到.bashrc文件中(我希望它附加到我的个人资料中,而不是spark会话中)
我是如何做到的:
步骤1:ssh到主节点在我的例子中,它与gcp中的ipython内核/服务器vm相同
第二步:
cd~
sudo nano.bashrc公司
向下滚动到最后一行并粘贴下面的行
export spark_home=“/home/your/path/to/spark-2.1.1-bin-hadoop2.7/”
ctrlx和y,然后按enter保存更改
注意:为了清晰起见,我还向环境部分添加了更多细节。

相关问题