初识火花之火花API

API
应用可以通过使用火花提供的库获得火花集群的计算能力,这些库都是Scala编写的,但是火花提供了面向各种语言的API,例如Scala, Python, Java等,所以可以使用以上语言进行火花应用开发。
火花的API主要由两个抽象部件组成:SparkContext和抽样,应用程序通过这两个部件和火花进行交互,连接到火花——集群并使用相关资源。

1。SparkContext
是定义在Spark库中的一个类,作为火花库的入口。包含应用程序主要()方法的驱动程序通过SparkContext对象访问火花,因为SparkContext对象表示与火花集群的一个连接。每个火花应用都有且只有一个激活的SparkContext类实例,如若需要新的实例,必须先让当前实例失活。
(在shell中SparkContext已经自动创建好,就是sc)

实例化SparkContext:

val sc=new SparkContext ()
1
2。抽样
抽样基础概念
弹性分布式数据集(弹性分布式数据集)

并行分布在整个集群中
把指定路径下的文本文件加载到行这个抽样中,这就个行是一个抽样,代表是就是整个文本文件

val行=sc.textFile(“家庭/哈哈/helloSpark.txt”)
1
即使这个文件超大,分片存储在多台机器上,操作时可以直接使用抽样对整体文件进行操作

抽样是火花分发数据和计算的基础抽象类
例如:lines.count ()
在.count()的函数操作是在抽样数据集上的,而不是对某一具体分片

一个抽样是一个不可改变的分布式集合对象
就行来说,如果我们对其所代表的源文件进行了增删改操作,则相当于生成了一个新的抽样,来存放修改后的数据集

火花中所有的计算都是通过抽样的创建,转换,操作完成的

一个抽样内部由许多分区(分片)组成
分区:
每个分片包括一部分数据,分片可在集群不同节点上计算
分片是火花并行处理的单元,火花顺序的,并行的处理分片

抽样创建方法
1。把一个存在的集合传给SparkContext的parallize()方法(一般测试的时候使用这个方法)

val抽样=sc.parallelize(数组(1、2、2、1),4)
//参数1:待并行化处理的集合;参数2:分区个数

rdd.count()//查看个数
rdd.foreach(印刷)//查看抽样的所有对象
//注意:每次foreach出来数值顺序会不一样,因为数据存储于4个分区,从哪个分区读取数值是随机的
1
2
3
4
5
6 7

2。加载外部数据集

//用文本文件方法加载
//该方法返回一个抽样,该抽样代表的数据集每个元素都是一个字符串,每个字符串代表输入文件中的一行
val rddText=sc.textFile (helloSpark.txt)

//用wholeTextfiles方法加载
//这个方法读取目录下的所有文本文件,然后返回一个KeyValue对抽样(每一个键值对对应一个文件,主要为文件路径,值为文件内容)
val rddW=sc.wholeTextFile(“路径//我的数据/* . txt”)

//用sequenceFile方法加载
//此方法要求从sequenceFile文件中获取键值对数据,返回一个KeyValue对抽样(使用此方法时,还需要提供类型)
val抽样=sc.sequenceFile(字符串,字符串)(“文件”)
1
2
3
4
5
6
7
8
9
10
11
抽样的转换操作
转换(转换)——从之前的抽样中构建一个新的抽样

逐元素
map():接收函数后,把函数应用到抽样的每一个元素,返回新的抽样

val lines1=sc.parallelize(数组(“你好”、“火花”、“你好”、“世界”、“!”))
val lines2=lines1.map(词=祝辞(单词,1)
lines2.foreach println ()

//打印出:
(你好,1)
(火花,1)
(你好,1)
(世界,1)
(!, 1)
1
2
3
4
5
6 7 8


9
10 11

过滤器():接收函数后,返回只包含满足过滤器()函数的元素的新抽样

val lines3=lines.filter(词=祝辞word.contains (“hello”))

lines3.foreach println ()
//打印出:你好


1
2
3
4
5
6 7

flatMap():对每个输入元素,输出多个输出元素,也就是将抽样中元素平(压扁)后返回一个新的抽样

val输入=sc.textFile (/home/哈哈/helloSpark.txt)
val lines4=input.flatMap(=祝辞线。null

初识火花之火花API