Spark WordCount和Transformation Action Controller三种操作

来源:互联网 发布:淘宝手机12期分期付款 编辑:程序博客网 时间:2024/05/16 06:28

Q1:RDD 的操作有几种?
1. Transformation:进行数据状态的转换,对已有的RDD创建新的RDD。
例如:
(1)map(func) :返回一个新的分布式数据集,由每个原元素经过func函数转换后组成
(2)filter(func) : 返回一个新的数据集,由经过func函数后返回值为true的原元素组成 
(3)flatMap(func) : 类似于map,但是每一个输入元素,会被映射为0到多个输出元素(因此,func函数的返回值是一个Seq,而不是单一元素)
(4)sample(withReplacement, frac, seed) : 根据给定的随机种子seed,随机抽样出数量为frac的数据
(5)union(otherDataset) : 返回一个新的数据集,由原数据集和参数联合而成
(6)groupByKey([numTasks]) : 在一个由(K,V)对组成的数据集上调用,返回一个(K,Seq[V])对的数据集。注意:默认情况下,使用8个并行任务进行分组,你可以传入numTask可选参数,根据数据量设置不同数目的Task
(7)reduceByKey(func, [numTasks]) : 在一个(K,V)对的数据集上使用,返回一个(K,V)对的数据集,key相同的值,都被使用指定的reduce函数聚合到一起。和groupbykey类似,任务的个数是可以通过第二个可选参数来配置的。
(8)join(otherDataset, [numTasks]) : 在类型为(K,V)和(K,W)类型的数据集上调用,返回一个(K,(V,W))对,每个key中的所有元素都在一起的数据集
(9)groupWith(otherDataset, [numTasks]) : 在类型为(K,V)和(K,W)类型的数据集上调用,返回一个数据集,组成元素为(K, Seq[V], Seq[W]) Tuples。这个操作在其它框架,称为CoGroup
(10)cartesian(otherDataset) : 笛卡尔积。但在数据集T和U上调用时,返回一个(T,U)对的数据集,所有元素交互进行笛卡尔积。
2. Action:触发具体的作业,对RDD最后取结果的一种操作。
例如:
(1)reduce(func):通过函数func先聚集各分区的数据集,再聚集分区之间的数据,func接收两个参数,返回一个新值,新值再做为参数继续传递给函数func,直到最后一个元素
(2)collect():以数据的形式返回数据集中的所有元素给Driver程序,为防止Driver程序内存溢出,一般要控制返回的数据集大小
(3)count():返回数据集元素个数
(4)first():返回数据集的第一个元素
(5)take(n):以数组的形式返回数据集上的前n个元素
(6)top(n):按默认或者指定的排序规则返回前n个元素,默认按降序输出 
(7)takeOrdered(n,[ordering]): 按自然顺序或者指定的排序规则返回前n个元素
(8)saveAsTextFile()
3. Controller:对性能效率和容错方面的支持。persist , cache, checkpoint
Q2:假定input/*下面有10个小于128M的文件,这个过程产生几个Partition?
12个
Q2:并行度,Shuffle,Partition之间的关系?
并行度和Shuffle没有任何关系,并行度是涉及到执行效率的,Shuffle由RDD的依赖关系决定,如上如果不指定并行度,并行度会传递过去的。设置多少个并行度就有多少个Partition。

原创粉丝点击