Spark编程
persist(): 把数据以序列化的形式缓存在JVM的堆空间中;
cache(): 与使用默认存储级别调用persist()是一样的;
collect(): 只有当你的整个数据集能在单台机器的内存中放得下时,才能使用collect(),因此,collect() 不能用在大规模数据集上;把RDD 筛选到一个很小的规模,并且你想在本地处理这些数据时;
转化操作:
map()
filter()
flatMap()
distinct()
union()
intersection() 需要数据混洗
subtract() 需要数据混洗
cartesian() 笛卡尔积
行动操作:
reduce() reduce()与fold()方法是对同种元素类型数据的RDD进行操作,即必须同构。其返回值返回一个同样类型的新元素;
fold() fold()与reduce()类似,接收与reduce接收的函数签名相同的函数,另外再加上一个初始值作为第一次调用的结果;
aggregate() 可以对两个不同类型的元素进行聚合,即支持异构;
take() 返回RDD 中的n 个元素,并且尝试只访问尽量少的分区,因此该操作会得到一个不均衡的集合;
top() 使用数据的默认顺序,但我们也可以提供自己的比较函数,来提取前几个元素;
takeSample(withReplacement, num,seed) 可以让我们从数据中获取一个采样,并指定是否替换。
键值对操作:
reduceByKey():合并相同的键;
foldByKey():
combineByKey():基于键进行聚合;
mapValues():对每个值应用一个函数;
flatMapValues():对每个值应用一个返回迭代器的函数;
keys() values()
subtractByKey():删掉RDD中键与other RDD中的键相同的元素;
sortByKey():返回一个依据键排序的rdd;
partitionBy():
repartition():把数据通过网络进行混洗,并创建出新的分区集合;
coalesce():优化版的repartiton()
groupByKey():依据键是否相同进行分组;
groupBy():可以用于未成对的数据上,也可以根据除键相同之外的条件进行分组;
cogroup():将两个RDD 中拥有相同键的数据分组到一起;可应用于三个及以上的RDD;值的类型不必相同;
join() rightOuterJoin() leftOuterJoin()
collectAsMap()
下一篇: 逆天的小朋友,个个碉堡了。