Driver program:
包含main方法,RDDs定义和操作
管理很多节点,executors
SparkContext:
Driver program通过spark context对象访问spark, 代表和一个集群的连接,在shell中自动创建好,就是sc
RDDs,
弹性分布式数据集Resilient distributed datasets,并行分别在集群中
val lines= sc.textFile()
lines就是RDDs,代表整个文件,不管被切分为多少份
分发数据和计算的基础数据类
lines.count()
一个RDDs代表不可改变的分布式集合对象
spark上所有的计算都是通过 RDDs的创建,转换,操作来完成的
一个RDD内部有很多partitions组成
分片:
每个分片包含一部分数据,partitions可以在集群不同节点上计算
lines.count() 每台计算都会进行计算,然后汇总
分片是spark并行处理单元,spark顺序,并行的处理分片
RDDs的创建方法
把一个存在的集合传给sparkContext的parallelize()方法,测试用
val rdd = sc.parallelize(Array(1,2,2,4),4) 分区
第一个参数:待并行化处理的集合,第二个参数:分区个数
rdd.count()
rdd.foreach(print)查看所有对象,测试用
先打印哪一个是随机的
加载外部数据集,textfile
Scala基础知识
Scala变量声明: 必须使用val或var
val变量不可修改,一旦分配不能重新指向别的值
var,分配后可指向相同类型的值
val lines= .sc.textFile("hellospark1.txt")
lines = sc.textFile("hellospark2.txt") 报错reassignment to val
var lines2.=sc.textFile("hellospark1.txt")
lines2 = .sc.textFile("hellospark2.txt") 成功
Scala匿名函数
lines.filter(line => line.contains("world"))
匿名函数,接受一个参数line,判断是否包含单词world
lines.foreach(line)
类型判断,可以自己推断出类型,不用定义