Spark教程

Spark RDD操作

RDD 操作

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

转换

在 Spark 中,转换的作用是从现有数据集创建一个新数据集。转换被认为是惰性的,因为它们仅在操作需要将结果返回给驱动程序时才计算。
让我们看看一些常用的 RDD 转换。
转型 说明
map(func) 它返回一个新的分布式数据集,它是通过函数 func 传递源的每个元素形成的。
filter(func) 它返回一个新数据集,该数据集是通过选择源中 func 返回 true 的那些元素而形成的。
flatMap(func) 这里,每个输入项都可以映射到零个或多个输出项,因此 func 应该返回一个序列而不是单个项。
mapPartitions(func) 它类似于map,但是在RDD的每个分区(块)上单独运行,所以func必须是Iterator => Iterator 类型,当运行在T类型的RDD上时。
mapPartitionsWithIndex(func) 它类似于mapPartitions,它为func提供了一个整数值来表示分区的索引,所以func必须是(Int, Iterator ) => Iterator 在类型为T的RDD上运行时.
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) 对的数据集,其中每个键的值使用给定的组合函数和中性"零"值聚合。
sortByKey([ascending], [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(partitioner) 它根据给定的分区器对 RDD 进行重新分区,并在每个生成的分区内按其键对记录进行排序。

Action

在 Spark 中,Action 的作用是在对数据集运行计算后返回一个值给驱动程序。
让我们看看一些常用的 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) 它在数据集的每个元素上运行一个函数 func 以产生副作用,例如更新累加器或与外部存储系统交互。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4