Spark学习笔记

1、map与flatmap函数的区别;

map的结果不改变输入每个数据元的结构;

flatmap的结果,将每一个输入数据元经过计算后的结果都平铺了,其输出不再是对应每一个输入元数据结构;

2、textFile()函数中,第一个参数是文件路径;第二个可选参数,是控制文件的partitions的参数,默认值是1;

(1)所有spark中基于文件的输入函数,包括textfile,都可以运行在多个目录/压缩文件/正则匹配文件上。例如:textFile("/my/directory"),textFile("/my/direct*")textFile("/my/directory/*.txt"), and textFile("/my/directory/*.gz").

(2)spark中通过使用sc.textFile(“不同filepath”)等输入函数,可以构成多个不同的输入rdd,作为多输入源;

       还可以通过使用for循环等操作,分别赋值作为输入源路径参数,非常方便读取多个文件、目录、大量数据;

3、rdd是可以用"++""union"合并的,不过需要合并的两个对象类型相同;

4、reduceByKey与reduce的区别:

(1)reduceByKey是转化操作,reduce是行动操作;

(2)reduceByKey只能操作kv数据集,reduce则不是;

5、正如 .toString 可以将记录转为string类型一样,.toDS() 则可以将sequence数据转化为数据集(或者说数据表)的形式;类似的还有.toDF(),是将数据转换为关系数据表的函数;然后才可以使用spark SQL;

6、spark中job,stage,task的区别和划分依据:

(1)spark运行过程中job是以action操作划分的,除了我们自己写的程序的action动作,还包括调用的算法或者工具包里的action操作;

(2)stage是在job里面划分,是以action操作或shuffle操作划分的;

(3)task是stage的运行单位,与partition的数目相关;