开发手册 欢迎您!
软件开发者资料库

PySpark - SparkContext

PySpark SparkContext - 从简单和简单的步骤学习PySpark,从基本到高级概念,包括简介,环境设置,SparkContext,RDD,广播和累积器,SparkConf,SparkFiles,StorageLevel,MLlib,Serializers。

SparkContext是任何spark功能的入口点.当我们运行任何Spark应用程序时,会启动一个驱动程序,它具有main函数,并且此处启动了SparkContext.然后,驱动程序在工作节点上的执行程序内运行操作.

SparkContext使用Py4J启动 JVM 并创建 JavaSparkContext .默认情况下,PySpark将SparkContext作为'sc'提供,因此创建新的SparkContext将不起作用.

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 = )

参数

以下是SparkContext的参数.

  • Master : 它是它所连接的群集的URL.

  • appName : 你的工作名称.

  • sparkHome :  Spark安装目录.

  • pyFiles : 要发送到集群并添加到PYTHONPATH的.zip或.py文件.

  • 环境 : 工作节点环境变量.

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

  • 序列化程序 :  RDD序列化器.

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

  • 网关 : 使用现有网关和JVM,否则初始化新JVM.

  • JSC :  JavaSparkContext实例.

  • profiler_cls : 用于分析的一类自定义Profiler(默认为pyspark.profiler.BasicProfiler).

在上述参数中, appname 主要使用.任何PySpark程序的前两行看起来如下所示 :

from pyspark import SparkContextsc = 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 Shell


<<< 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 SparkContextlogFile = "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.pyOutput: Lines with a: 62, lines with b: 30