为啥初始化 Spark Context 的代码在不同的源之间差别很大?
Posted
技术标签:
【中文标题】为啥初始化 Spark Context 的代码在不同的源之间差别很大?【英文标题】:Why does the code for initializing Spark Context vary widely between different sources?为什么初始化 Spark Context 的代码在不同的源之间差别很大? 【发布时间】:2019-10-14 23:16:52 【问题描述】:我知道我需要初始化 Spark 上下文以在 PySpark 中创建弹性分布式数据集 (RDD)。但是,不同的来源给出了不同的代码来说明如何做到这一点。要一劳永逸地解决这个问题,正确的代码是什么?
1) 教程点的代码: https://www.tutorialspoint.com/pyspark/pyspark_sparkcontext.htm
from pyspark import SparkContext
sc = SparkContext("local", "First App")
2) 来自 Apache 的代码: https://spark.apache.org/docs/2.2.0/rdd-programming-guide.html#resilient-distributed-datasets-rdds
from pyspark import SparkContext, SparkConf
然后,在页面的后面,有:
conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)
这只是两个例子。我可以列出更多,但对我来说主要问题是如此简单和基本的东西缺乏统一性。请帮忙澄清一下。
【问题讨论】:
都是一样的。您可以从1)
中的默认配置开始,然后您可以使用SparkConf
传递配置,例如2)
我有两个问题:A) 如果我不运行 SparkConf 会怎样? B) 如果我没有在 SparkContext 中指定 'local' 和 'First App' 会发生什么?
A) 如果您不运行SparkConf
,它将进入默认设置,但您需要从SparkContext
中删除conf=conf
。 B) 如果你不指定local
,它仍然会使用local
谢谢。此外,C) SparkContext 的文档没有“First App”一词。它有什么作用? D)当您说“本地”时,它指的是什么?是指 Spark 应用程序应该在本地还是在计算机集群上完成?
如果您说本地,您使用的是本地主机资源。当您指定 spark 集群的主节点 IP 地址时,您将使用集群资源。当你不指定应用名称时,它可以留空,或者 spark 可以创建一个随机名称
【参考方案1】:
1)
在local[N]
- N 是一个节点在任何时间点可以使用的最大核心数。这将使用您的本地主机资源。
在集群模式下(当您指定主节点 IP 时)您可以设置 --executor-cores N
。意思是每个executor在一个executor中最多可以同时运行N个task。
2)
当您不指定应用名称时,它可以留空,或者 spark 可以创建一个随机名称。我正在尝试获取setAppName()
的源代码,但找不到任何肉
【讨论】:
以上是关于为啥初始化 Spark Context 的代码在不同的源之间差别很大?的主要内容,如果未能解决你的问题,请参考以下文章
SparkContext的初始化(季篇)——测量系统ContextCleaner及环境更新
第45讲:Scala中Context Bounds代码实战及其在Spark中的应用源码解析
Spark-submit Sql Context Create Statement 不起作用
spark 卡在spark context,运行出现spark Exception encountered while connecting to the server : javax.securi