PySpark SparkContext

PySpark SparkContext

SparkContext是任何Spark功能的入口点。当我们运行任何Spark应用程序时,一个驱动程序会启动,它有主要的功能,你的SparkContext在这里被启动。然后驱动程序在工作节点的执行器内运行操作。

SparkContext使用Py4J来启动一个 JVM 并创建一个 JavaSparkContext。 默认情况下,PySpark有SparkContext可用的 ‘sc ‘,所以创建一个新的SparkContext将不会工作。

PySpark - SparkContext

下面的代码块有一个PySpark类的细节和参数,SparkContext可以接受这些参数。

class pyspark.SparkContext (
   master = None,
   appName = None, 
   sparkHome = None, 
   pyFiles = None, 
   environment = None, 
   batchSize = 0, 
   serializer = PickleSerializer(), 
   conf = None, 
   gateway = None, 
   jsc = None, 
   profiler_cls = <class 'pyspark.profiler.BasicProfiler'>
)

参数

以下是SparkContext的参数。

  • Master – 它是它所连接的集群的URL。

  • appName – 工作的名称。

  • sparkHome – Spark 的安装目录。

  • pyFiles – 发送给集群的.zip或.py文件,并添加到PYTHONPATH中。

  • Environment – 工作节点的环境变量。

  • batchSize – 以单个Java对象表示的Python对象的数量。设置1可以禁用批处理,设置0可以根据对象的大小自动选择批处理大小,设置-1可以使用无限制的批处理大小。

  • Serializer – RDD序列化器。

  • Conf – L{SparkConf}的一个对象,用于设置所有Spark属性。

  • Gateway – 使用现有网关和JVM,否则初始化一个新的JVM。

  • JSC – JavaSparkContext实例。

  • profiler_cls – 用于做剖析的自定义剖析器类(默认是 pyspark.profiler.BasicProfiler)。

在上述参数中, masterappname 是最常用的。任何PySpark程序的前两行看起来如下所示

from pyspark import SparkContext
sc = SparkContext("local", "First App")

SparkContext实例 – PySpark Shell

现在你对SparkContext有了足够的了解,让我们在PySpark shell上运行一个简单的例子。在这个例子中,我们将计算 README.md 文件中带有’a’或’b’字符的行数。因此,让我们说,如果一个文件中有5行,其中3行有字符’a’,那么输出将是→ 有a的行。3 . 对字符’b’也会这样做。

注意 - 在下面的例子中我们没有创建任何SparkContext对象,因为默认情况下,当PySpark shell启动时,Spark会自动创建名为sc的SparkContext对象。如果你试图创建另一个SparkContext对象,你会得到以下错误 – “ValueError:不能同时运行多个SparkContexts”。

PySpark - SparkContext

<<< logFile = "file:///home/hadoop/spark-2.1.0-bin-hadoop2.7/README.md"
<<< logData = sc.textFile(logFile).cache()
<<< numAs = logData.filter(lambda s: 'a' in s).count()
<<< numBs = logData.filter(lambda s: 'b' in s).count()
<<< print "Lines with a: %i, lines with b: %i" % (numAs, numBs)
Lines with a: 62, lines with b: 30

SparkContext实例–Python程序

让我们用一个Python程序来运行同样的例子。创建一个名为 firstapp.py 的Python文件,在该文件中输入以下代码。

----------------------------------------firstapp.py---------------------------------------
from pyspark import SparkContext
logFile = "file:///home/hadoop/spark-2.1.0-bin-hadoop2.7/README.md"  
sc = SparkContext("local", "first app")
logData = sc.textFile(logFile).cache()
numAs = logData.filter(lambda s: 'a' in s).count()
numBs = logData.filter(lambda s: 'b' in s).count()
print "Lines with a: %i, lines with b: %i" % (numAs, numBs)
----------------------------------------firstapp.py---------------------------------------

然后我们将在终端执行以下命令来运行这个Python文件。我们将得到和上面一样的输出。

$SPARK_HOME/bin/spark-submit firstapp.py
Output: Lines with a: 62, lines with b: 30

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程