Spark机器学习:Spark 编程模型及快速入门
Posted -柚子皮-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark机器学习:Spark 编程模型及快速入门相关的知识,希望对你有一定的参考价值。
http://blog.csdn.net/pipisorry/article/details/52366356
Spark编程模型
SparkContext类和SparkConf类
代码中初始化
我们可通过如下方式调用 SparkContext 的简单构造函数,以默认的参数值来创建相应的对象。
val sc = new SparkContext("local[4]", "Test Spark App")
这段代码会创建一个4线程的 SparkContext 对象 。
appName 参数是你程序的名字,它会显示在 cluster UI 上,上面代码相应的任务命名为 Test Spark APP。
master 是 Spark, Mesos 或 YARN 集群的 URL,或运行在本地模式时,使用专用字符串 “local”。在实践中,当应用程序运行在一个集群上时,你并不想要把 master 硬编码到你的程序中,你可以用 spark-submit 启动你的应用程序的时候传递它。然而,你可以在本地测试和单元测试中使用 “local” 运行 Spark 进程。
[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'>)¶]
shell中初始化
在 Spark shell 中,有一个专有的 SparkContext 已经为你创建好。在变量中叫做 sc。你自己创建的 SparkContext 将无法工作。可以用 --master 参数来设置 SparkContext 要连接的集群,用 --jars 来设置需要添加到 classpath 中的 JAR 包,如果有多个 JAR 包使用逗号分割符连接它们。例如:在一个拥有 4 核的环境上运行 bin/spark-shell,使用:
$ ./bin/spark-shell --master local[4]
或在 classpath 中添加 code.jar,使用:
$ ./bin/spark-shell --master local[4] --jars code.jar
执行 spark-shell --help 获取完整的选项列表。在这之后,调用 spark-shell 会比 spark-submit 脚本更为普遍。
SQLContext
操作sql相关函数的类,需要这样才能使用:
sc = SparkContext(master='local[8]', appName='kmeans') sql_ctx = SQLContext(sc)
Spark:弹性分布式数据集RDD及spark转换和操作
[Spark:弹性分布式数据集RDD及spark转换和操作 ]
共享变量
Spark 的共享变量能被运行在并行计算中。默认情况下,当 Spark 运行一个并行函数时,这个并行函数会作为一个任务集在不同的节点上运行,它会把函数里使用的每个变量都复制搬运到每个任务中。有时,一个变量需要被共享到交叉任务中或驱动程序和任务之间。
Spark 支持 2 种类型的共享变量:广播变量(broadcast variables),用来在所有节点的内存中缓存一个值;累加器(accumulators),仅仅只能执行“添加(added)”操作,例如:记数器(counters)和求和(sums)。
广播变量broadcast variable
-
class pyspark.Broadcast(sc=None, value=None, pickle_registry=None, path=None)
-
A broadcast variable created with SparkContext.broadcast().Access its value through value.
Examples:
>>> from pyspark.context import SparkContext >>> sc = SparkContext('local', 'test') >>> b = sc.broadcast([1, 2, 3, 4, 5]) >>> b.value [1, 2, 3, 4, 5] >>> sc.parallelize([0, 0]).flatMap(lambda x: b.value).collect() [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] >>> b.unpersist()
以上是关于Spark机器学习:Spark 编程模型及快速入门的主要内容,如果未能解决你的问题,请参考以下文章