Hadoop教程
HBase
Hive
Pig
Sqoop
Spark

RDD操作

RDD提供两种类型的操作:
转型 动作

转换

在Spark中,转换的作用是从现有数据集中创建新的数据集。转换被认为是惰性的,因为它们仅在动作需要将结果返回给驱动程序时才计算。
让我们看看一些常用的RDD转换。
转化 说明
map(func) 它返回一个新的分布式数据集,该数据集是通过将函数中的源元素传递给函数而形成的。
filter(func) 它返回一个新的数据集,该数据集是通过选择func在其上返回true的源元素形成的。
flatMap(func) 在这里,每个输入项都可以映射到零个或多个输出项,因此func应该返回一个序列而不是单个项。
mapPartitions(func) 它与map相似,但是分别在RDD的每个分区(块)上运行,因此当在类型T的RDD上运行时func必须是Iterator => Iterator 类型。
mapPartitionsWithIndex(func) 类似于mapPartitions,它为func提供表示分区索引的整数值,因此当在类型T的RDD上运行时,func的类型必须为(Int,Iterator )=> Iterator
sample(withReplacement,fraction,seed) 它使用给定的随机数生成器种子对数据的分数部分进行采样,无论是否进行替换。
union(otherDataset) 它将返回一个新的数据集,其中包含源数据集中的元素与参数的并集。
intersection(otherDataset) 它将返回一个新的RDD,其中包含源数据集中的元素和参数的交集。
distinct([numPartitions])) 它将返回一个新的数据集,其中包含源数据集的不同元素。
groupByKey([numPartitions]) 它返回(K,Iterable)对在(K,V)对的数据集中调用时。
reduceByKey(func,[numPartitions]) 在(K,V)对的数据集上调用时,返回(K,V)对的数据集,其中每个键的值使用给定的reduce函数func进行汇总,该函数必须为(V,V)=> V。
aggregateByKey(zeroValue)(seqOp,combOp,[numPartitions]) 在(K,V)对的数据集上调用时,返回(K,U)对的数据集,其中每个键的值使用给定的Combine函数和中性的"零"值进行汇总。
sortByKey([升序],[numPartitions]) 它返回键-值对的数据集,按布尔值升序参数中的指定,键-值对按键升序或降序排序。
join(otherDataset,[numPartitions]) 在(K,V)和(K,W)类型的数据集上调用时,返回(K,(V,W))对的数据集,其中每个键都有所有成对的元素。通过leftOuterJoin,rightOuterJoin和fullOuterJoin支持外部联接。
cogroup(otherDataset,[numPartitions]) 在(K,V)和(K,W)类型的数据集上调用时,返回(K,(Iterable,可迭代))元组。此操作也称为groupWith。
cartesian(otherDataset) 在类型为T和U的数据集上调用时,返回(T,U)对(所有元素对)的数据集。
pipe(command,[envVars]) 通过shell命令将RDD的每个分区放入管道,例如Perl或bash脚本。
coalesce(numPartitions) 它将RDD中的分区数量减少到numPartitions。
repartition(numPartitions) 它随机重新随机排列RDD中的数据,以创建更多或更少的分区,并在整个分区之间保持平衡。
repartitionAndSortWithinPartitions(分区程序) 它根据给定的分区程序对RDD进行重新分区,并在每个结果分区中,按其键对记录进行排序。

动作

在Spark中,动作的作用是在数据集上运行计算后将值返回给驱动程序。
让我们看看一些常用的RDD动作。
动作 说明
reduce(func) 它使用函数func(接受两个参数并返回一个)来聚合数据集的元素。该函数应该是可交换的和关联的,以便可以并行正确地计算它。
collect() 它在驱动程序中将数据集的所有元素作为数组返回。通常在过滤器或其他操作返回足够小的数据子集之后有用。
count() 它返回数据集中的元素数。
first() 它返回数据集的第一个元素(类似于take(1))。
take(n) 它返回一个数组,其中包含数据集的前n个元素。
takeSample(withReplacement,num,[seed]) 它返回一个数组,该数组包含数据集中num个元素的随机样本,有无替换,也可以预先指定一个随机数生成器种子。
takeOrdered(n,[ordering]) 它使用自然顺序或自定义比较器返回RDD的前n个元素。
saveAsTextFile(path) 它用于将数据集的元素作为文本文件(或文本文件集)写入本地文件系统,HDFS或任何其他Hadoop支持的文件系统中的给定目录中。 Spark会在每个元素上调用toString,以将其转换为文件中的一行文本。
saveAsSequenceFile(path)
(Java和Scala)
它用于将数据集的元素作为Hadoop SequenceFile写入本地文件系统,HDFS或任何其他Hadoop支持的文件系统中的给定路径中。
saveAsObjectFile(path)
(Java和Scala)
它用于使用Java序列化以简单格式写入数据集的元素,然后可以使用SparkContext.objectFile()进行加载。
countByKey() 它仅在类型(K,V)的RDD上可用。因此,它会返回(K,Int)对的哈希图以及每个键的计数。
foreach(func) 它在数据集的每个元素上运行一个函数,以消除副作用,例如更新累加器或与外部存储系统进行交互。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4