大数据之Spark探秘:二、RDD的Transformations操作
2015-08-03 15:26
302 查看
一、简介
Spark中的核心数据模型是弹性分布式数据集(RDD),而弹性分布式数据集(RDD)是个抽象类,具体的实现是由各个子类实现的。Spark将常用的大数据操作都转换为对RDD的子类操作。Transformation操作的对象有两种:Value数据类型,Key-Value数据类型。下面将这两种数据类型的操作列出来:
二、Translation操作
2.1 Value数据类型
map(func)将原来RDD中的每个元素通过自定义函数func转换为一个包含新元素的RDD。
filter(func)
对原有RDD中的元素进行过滤,每个元素输入到func函数中,如果func函数返回为true则保留,返回false则丢弃。
flatMap(func)
功能与map相似,但是输出的是一个集合。
mapPatitions(func)
功能与map相似,但是mapPatitions获取的是每个分区的迭代器。
mapPationsWithIndex(func)
功能与mapPatitions相似,但是func函数要返回一个表示分区index的interger类型的值
sanple(withReplacement, fraction, seed)
对数据集中的数据进行采样,想成一个新的RDD
union(otherDateset)
将两个数据类型相同的RDD合并成一个RDD
intersection(oterDataset)
返回一个包含两个数据类型相同的RDD的交集的全新的RDD
distinct([numTasks])
对RDD中的元素进行去重操作
cartesian(otherDataset)
对两个RDD内的所有元素进行笛卡尔积操作。
pip(command, [envVars])
对RDD的每个分区通过脚本命令,RDD元素可以写入进程的stdin和行输出到标准输出作为字符串返回。
coalesce(numPartitions)
设置RDD数据的分区数,可以让数据集的操作更加高校。
repartition(numPartitions)
修改RDD数据的分区数
repartionAndSortWithinPartitions(pationer)
重新设置RDD分区,根据keys值排序,这个比repartition更加高效。
2.2 Key-value类型
groupByKey([numTasks])返回一个(k, iterable)键值对
注意:如果你分组是为了执行一个聚合(比如求和或平均),使用reduceByKey或aggregateByKey将有更好的性能。
注意:默认情况下,并行输出的分区数取决于父抽样的分区的数量。您可以通过一个可选的numTasks参数设置不同数量的任务。
reduceByKey(func, [numTasks])
对k相同的键值对中的值调用func函数,合并产生一个值
aggregateByKey(zeroValue)(seqOp, combOp, [numTasks])
当对(K、V)的数据集对调用函数时,返回一个数据集的(K,U)对每个键值聚合使用给定的组合功能和一个中立的“0”值。允许产生的聚合值类型不同于输入值类型,同时避免不必要的配置。而在groupByKey中,需要配置第二个参数。
sortedByKey([ascending], [numTasks])
返回一个按照k值进行排序的键值对RDD。
cogroup(oterDataset, [numTasks])
对两个RDD进行协同划分,每个RDD中形同Key的元素分别聚合为一个集合,并且返回两个RDD中对应key中的元素集合的迭代器。
join(otherDataset, [numTasks])
对俩个需要连接的RDD进行cogroup函数操作,cogroup原理如上,cogroup操作后形成的新的RDD,对每个Key下的元素进行笛卡尔积操作,返回结果在展平。
相关文章推荐
- MongoDB性能篇 - 索引,explain执行计划,优化器profile,性能监控mongosniff
- Most of these Diesel-engined wristwatches wall socket available for purchase are designed when using the similar premium quality products
- http://blog.csdn.net/a9529lty/article/details/6454145
- HDFS的运行原理(转)
- 【Windows 10 IoT - 3】Windows 10 RTM安装及新特性(树莓派 Pi2)
- Xencenter管理Localstorage执行scan时报错:Error code: SR_BACKEND_FAILURE_46
- F - Rain on your Parade - hdu 2389(二分图匹配,Hk算法)
- poj 3411 Paid Roads
- Redhat6.5 install Sendmail module
- HDU 3452 Bonsai
- 2015 Multi-University Training Contest 4 hdu 5334 Virtual Participation
- URAL 1027 D++ Again
- Fractions Again?分数拆分
- POJ - 1363 - Rails(栈)
- 用CorePlot实现类似Air Quality的柱状图滚动效果(1/2)
- HDU 2476 区间DP String painter
- POJ 1273 --Drainage Ditches【最大流模板 && dinic】
- openstack keypair实践
- DllMain和多线程死锁
- MacBook Air响一声白屏故障情况说明及解决