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 进程。

[SparkContext]

[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 编程模型及快速入门的主要内容,如果未能解决你的问题,请参考以下文章

14.spark mllib之快速入门

Spark2.x+Python大数据机器学习视频课程

Spark2.x+Python大数据机器学习视频课程

数据分析高阶技能快速!入门Spark MLlib机器学习库

Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

Spark快速入门之RDD编程模型