继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Spark action 操作列表

幕布斯6054654
关注TA
已关注
手记 1258
粉丝 219
获赞 1011

以下内容来自 Spark 官方文档 Actions 小节, 更多内容可查看官方文档. 如有不当之处, 欢迎指正.

行动涵义
reduce(func)使用传入的函数参数 func 对数据集中的元素进行汇聚操作 (两两合并). 该函数应该具有可交换与可结合的性质, 以便于能够正确地进行并行计算.
collect()在 driver program 上将数据集中的元素作为一个数组返回. 这在执行一个 filter 或是其他返回一个足够小的子数据集操作后十分有用.
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 and Scala)对于本地文件系统, HDFS 或其他任何 Hadoop 支持的文件系统上的一个指定路径, 将数据集中的元素写为一个 Hadoop SequenceFile. 仅适用于实现了 Hadoop Writable 接口的 kay-value pair 的 RDD. 在 Scala 中, 同样适用于能够被隐式转换成 Writable 的类型上 (Spark 包含了对于 Int, Double, String 等基本类型的转换).
saveAsObjectFile(path)(Java and Scala)使用 Java 序列化将数据集中的元素简单写为格式化数据, 可以通过 SparkContext.objectFile() 进行加载.
countByKey()仅适用于 (K, V) 类型的 RDD. 返回每个 key 的 value 数的一个 hashmap (K, int) pair.
foreach(func)对数据集中的每个元素执行函数 func. 这通常用于更新一个 Accumulator 或与外部存储系统交互时的副作用. 注意: 修改 foreach() 外的非 Accumulator 变量可能导致未定义的行为. 更多细节请查看 Understanding closures.

可以看出 action 的所有操作都是针对数据集中 “元素” (element) 级别的动作, action 的主要内容是 存储计算.  引用 《Learning Spark》 里的说法:

Actions are operations that return a result to the driver program or write it to storage, and kick off a computation, such as count() and first().

再进一步细分的话大概有:

  • 获取元素
    collect(), first(), take(n), takeSample(withReplacement, num, [seed]),  takeOrdered(n, [ordering])

  • 计数元素
    count(), countByKey()

  • 迭代元素
    reduce(func),  foreach(func)

  • 保存元素
    saveAsTextFile(path), saveAsSequenceFile(path), saveAsObjectFile(path)

最后如果你对 transformation  和 action 仍有疑惑的话,书里也教了一个识别的好方法,观察函数的返回类型:如果返回的是  RDD 类型,那么这是 transformation; 如果返回的是其他数据类型,那么这是 action.

If you are ever confused whether a given function is a transformation or an action, you can look at its return type: transformations return RDDs, whereas actions return some other data type.



作者:liuchengxu
链接:https://www.jianshu.com/p/36d58fda1b3a


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP