DStream之转换操作(Transformation)

与 RDDs 类似,转换允许修改输入 DStream 中的数据。DStreams 支持许多在普通 Spark RDD 上可用的转换算子。一些常见的转换操作定义如下:

map(func)

通过函数 func 传递源 DStream 的每个元素来返回一个新的DStream。

flatMap(func)

与 map 类似,但是每个输入项可以映射到 0 或多个输出项。

filter(func)

通过只选择 func 返回 true 的源 DStream 的记录来返回一个新的 DStream。

repartition(numPartitions)

通过创建更多或更少的分区来改变 DStream 中的并行度。

union(otherStream)

返回一个新的 DStream,它包含源 DStream 和otherDStream 中元素的并集。

count()

通过计算源 DStream 的每个 RDD 中的元素数量,返回一个新的单元素 RDDs DStream。

reduce(func)

通过使用函数 func(接受两个参数并返回一个参数)聚合原DStream 的每个 RDD 中的元素,返回一个新的单元素 RDDs DStream。这个函数应该是结合律和交换律,这样才能并行计算。

countByValue()

当对类型为 K 的元素的 DStream 调用时,返回一个新的 DStream (K,Long)对,其中每个键的值是它在源 DStream 的每个 RDD中的频率。

reduceByKey(func, [numTasks])

当在(K, V)对的 DStream 上调用时,返回一个新的(K, V)对的 DStream,其中每个键的值使用给定的 reduce 函数
进行聚合。

注意:

在默认情况下,这将使用 Spark 的默认并行任务数(本地模式为 2,而在集群模式下,该数量由配置属性 spark.default.parallelism决定)来进行分组。可以传递一个可选的 numTasks 参数来设置不同数量的任务。

join(otherStream, [numTasks])

当调用两个 DStream (K, V)和(K, W)对时,返回一个新的 DStream (K,(V, W))对,每个键的所有对的元素。

cogroup(otherStream, [numTasks])

当调用(K, V)和(K, W)对的 DStream 时,返回一个新的(K, Seq[V],Seq[W])元组 DStream。

transform(func)

通过对源 DStream 的每个 RDD 应用一个 RDD-to-RDD函数来返回一个新的 DStream。这可以用来在 DStream 上执行任意的RDD 操作。

updateStateByKey(func)

返回一个新的“状态”DStream,其中通过对键的前一个状态和键的新值应用给定的函数来更新每个键的状态。这可以用来维护每个键的任意状态数据。

相比RDD转换,DStream有两个特殊操作:UpdateStateByKey 操作和Window操作。这是RDD中所没有的算子,前面已经和大家说过Window操作,还有不清楚的朋友可以再去看看:

Spark Streaming 之Window操作,相信对你们会有所帮助。

那么这次就给大家说下UpdateStateByKey 操作:

UpdateStateByKey

updateStateByKey 操作

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值