Apache spark 基于纱线簇的PySpark分布式加工

Apache spark 基于纱线簇的PySpark分布式加工,apache-spark,yarn,cloudera-cdh,pyspark,Apache Spark,Yarn,Cloudera Cdh,Pyspark,我让Spark在Cloudera CDH5.3集群上运行,使用Thread作为资源管理器。我正在用Python PySpark开发Spark应用程序 我可以提交作业并成功运行,但它们似乎从未在我提交的本地计算机上运行过 我尝试了多种选择,比如将-deploy模式设置为cluster,将-master设置为warn客户端和warn集群,但它似乎从来不会在多个服务器上运行 我可以通过传递像-master local[8]这样的消息,让它在多个核心上运行,但这显然不会将处理分布到多个节点上 我有一个非

我让Spark在Cloudera CDH5.3集群上运行,使用Thread作为资源管理器。我正在用Python PySpark开发Spark应用程序

我可以提交作业并成功运行,但它们似乎从未在我提交的本地计算机上运行过

我尝试了多种选择,比如将-deploy模式设置为cluster,将-master设置为warn客户端和warn集群,但它似乎从来不会在多个服务器上运行

我可以通过传递像-master local[8]这样的消息,让它在多个核心上运行,但这显然不会将处理分布到多个节点上

我有一个非常简单的Python脚本来处理来自HDFS的数据,如下所示:

import simplejson as json
from pyspark import SparkContext
sc = SparkContext("", "Joe Counter")

rrd = sc.textFile("hdfs:///tmp/twitter/json/data/")

data = rrd.map(lambda line: json.loads(line))

joes = data.filter(lambda tweet: "Joe" in tweet.get("text",""))

print joes.count()
我正在运行一个提交命令,如:

spark-submit atest.py --deploy-mode client --master yarn-client

如何确保作业在集群中并行运行?

PySpark似乎没有使用Spark/Thread以分布式模式运行-您需要使用带Spark主服务器的独立Spark。在这种情况下,我的PySpark脚本在集群中运行得非常好,每个核心/节点都有一个Python进程。

您可以交换命令的参数吗? spark提交-部署模式客户端-主纱线客户端atest.py

如果看到命令的帮助文本:

火花提交
我相信@MrChristine是正确的-您指定的选项标志将被传递到python脚本,而不是spark submit。此外,您还需要指定-executor cores和-num executors,因为默认情况下,它将在单个核心上运行,并使用两个executor

python脚本不是在集群模式下运行的。我不确定以前的版本,但这是在Hortonworks集群上的spark 2.2版本中执行的

命令:spark submit-主纱线-num executors 10-executor cores 1-驱动器存储器5g/pyspark-example.py

Python代码:


输出:它很大,所以我不粘贴。但它运行得很完美。

我想这不是真的,Pyspark可以在纱线簇上运行。如果你想运行Pyspark。Try:pyspark-部署模式客户端-主线程客户端
Usage: spark-submit [options] <app jar | python file>
from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext

conf = (SparkConf()
         .setMaster("yarn")
         .setAppName("retrieve data"))
sc = SparkContext(conf = conf)

sqlContext = SQLContext(sc)
parquetFile = sqlContext.read.parquet("/<hdfs-path>/*.parquet")

parquetFile.createOrReplaceTempView("temp")
df1 = sqlContext.sql("select * from temp limit 5")
df1.show()
df1.write.save('/<hdfs-path>/test.csv', format='csv', mode='append')
sc.stop()