一、SPARK CORE的使用
1.在JUPYTER网页上创建新的ipynb文件
2.环境准备代码
import os
import sys
spark_home = os.environ.get('SPARK_HOME',None)
if not spark_home:
raise ValueError('SPARK_HOME enviroment variable is not set')
sys.path.insert(0,os.path.join(spark_home,'python'))
sys.path.insert(0,os.path.join(spark_home,'python/lib/py4j-0.10.4-src.zip'))
exec(open(os.path.join(spark_home,'python/pyspark/shell.py')).read())
运行后显示
二、概念
1.SPARK CORE:spark生态圈的核心
RDD:容错性分布数据(Resilient Distributed Dataset),SPARK CORE的任务就是对这些数据进行分布式计算
2.RDD类型:
- 并行集合(分布式化的数据对象,类比python中的list)
- 文件系统数据集(Hadoop Datasets.文本文件,如通过sc.textFile()读取的数据)
对RDD的操作
- 变换(Transformations):返回值仍是RDD,但是只有等到Actions操作时才会真正计算给出结果--Lazy Evaluation
- 操作(Actions):返回值是非并行化的数据集合如python的list
3.并行化集合(我们处里的RDD数据,所有对于集合而言,第一步需要并行化)
parallelize(list)
可以看到我们的集合已经成功并行化
4.取值操作
take(n):从rdd返回n个元素
top(num):从rdd返回最大的num个数的元素
first():从rdd返回第一个元素
collect():从rdd返回所有元素
5.rdd元素变换
- map(): map()函数需要一个参数,参数是一个函数,简单理解:将RDD的每一个元素取出,分别通过这个函数变换之后,返回一个新的RDD. 这里使用匿名函数(lambda),给RDD每一个元素执行加一的变量,最后通过collect()操作查看结果
- flatMap(): 注意传入的函数的返回值一定要是可迭代的对象(比如元组 集合 列表)简单的理解:对RDD每一个元素执行函数变换,返回一个迭代器,最后展平结果
- filter(): 参数同样是一个函数,作用是过滤元素 执行过程:将RDD每一个元素执行你写的条件判断语句,只有结果为True才返回
- 其他
- union():联合 intersection():交集 subtract():差集 cartesian():笛卡尔