transform

作用:DStream提供的算子很少,使用transform使得DStream能用上rdd的算子
原理:对DStream中的rdd用transform掰开,掰开后就可以用rdd的方法来操作,操作完后返回DStream类型 的数据
image.png

  1. val transfromDS= ds.transform(rdd => {
  2. rdd.flatMap(_.split(" ")).map((_, 1)).sortBy(_._1)
  3. })

foreachRdd

作用和原理同transform一样,只是有以下区别:
image.png

join

将两个不同的DS[K-V]进行合并。
只能join
同一批次的数据。
并且K相同的数据。

引发问题:
image.png
image.png

运行位置总结:

非rdd都在driver端运行
rdd算子都在executor端运行

foreachRdd算子
image.png

transfrom算子
image.png