如何进行火花python编程

  介绍

本篇文章给大家分享的是有关如何进行火花python编程,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>火花应用程序结构

,火花应用程序可分两部分:司机部分和执行人部分初始化SparkContext和主体程序

<强>答:司机部分

,,,驱动部分主要是对SparkContext进行配置,初始化以及关闭。初始化SparkContext是为了构建火花应用程序的运行环境,在初始化SparkContext,要先导入一些火花的类和隐式转换,在遗嘱执行人部分运行完毕后,需要将SparkContext关闭。

<强> B:遗嘱执行人部分

,,,火花应用程序的遗嘱执行人部分是对数据的处理,数据分三种:

<李>

原生数据,包含输入的数据和输出的数据

<李>

生成Scala标量数据,如计数(返回抽样中元素的个数),减少折叠/聚合;返回几个标量,如采取(返回前几个元素)。

<李>

生成Scala集合数据集,如收集(把抽样中的所有元素倒入Scala集合类型),查找(查找对应的关键的所有值)。

<李>

生成hadoop数据集,如saveAsTextFile, saveAsSequenceFile

<李>

Scala集合数据集,如阵列(1、2、3、4、5),火花使用并行化方法转换成抽样。

<李>

hadoop数据集,火花支持存储在hadoop上的文件和hadoop支持的其他文件系统,如本地文件,HBase, SequenceFile和hadoop的输入格式,例如火花使用txtFile方法可以将本地文件或HDFS文件转换成抽样。

<李>

对于输入原生数据,火花目前提供了两种:

<李>

对于输出数据,火花除了支持以上两种数据,还支持Scala标量

<李>

抽样,火花进行并行运算的基本单位,其细节参见抽样细解.RDD提供了四种算子:

<李>

窄依赖算子

<李>

宽依赖算子,宽依赖会涉及洗牌类,在DAG图解析时以此为边界产生阶段,如图所示。

<李>

输入输出一对一的算子,且结果抽样的分区结构不变,主要是地图,flatMap;

<李>

输入输出一对一,但结果抽样的分区结构发生了变化,如工会,联合;

<李>

从输入中选择部分元素的算子,如过滤器,层次分明,减、样本。

<李>

对单个抽样基于关键进行重组和减少,如groupByKey, reduceByKey;

<李>

对两个抽样基于关键进行加入和重组,如加入,cogroup。

<李>

输入算子,将原生数据转换成抽样,如并行化,txtFile等

<李>

转换算子,最主要的算子,是引发生成DAG图的对象,转换算子并不立即执行,在触发行动算子后再提交给司机处理,生成DAG图——祝辞,,Stage ——比;Task ,——比;Worker执行。按转化算子在DAG图中作用,可以分成两种:

  • 缓存算子,对于要多次使用的RDD,可以缓冲加快运行速度,对重要数据可以采用多备份缓存。

  • 行动算子,将运算结果RDD转换成原生数据,如count、reduce、collect、saveAsTextFile等。

  • 共享变量,在Spark运行时,一个函数传递给RDD内的patition操作时,该函数所用到的变量在每个运算节点上都复制并维护了一份,并且各个节点之间不会相互影响。但是在Spark Application中,可能需要共享一些变量,提供Task或驱动程序使用。Spark提供了两种共享变量:

    • 广播变量,可以缓存到各个节点的共享变量,通常为只读,使用方法:

    • > 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]

      如何进行火花python编程