[Spark]-Streaming-操作篇

1.概论

  在Spark Streaming中,流数据被抽象有DStream.DStream本质是RDD(一批一批的RDD).

  所以Spark Streaming操作本质是RDD操作=>转换和操作,并且带有RDD操作的一切特征.(lazy等等)

2.DStream-转换(Transformations)

  2.1 map(func)

     利用函数 func 处理原 DStream 的每个元素,返回一个新的 DStream

  2.2 flatMap(func)

    与map类似,但结果会扁平化.即如果结果是迭代器容器的,会将元素从容器中取出再返回

  2.3 filter(func)

    返回一个新的 DStream,它仅仅包含原 DStream 中函数 func 返回值为 true 的项

  2.4 repartition(numPartitions)

    创建更多或者更少的分区(partition),这将改变这个 DStream 的并行级别

  2.5 union(otherStream)

    返回一个新的 DStream,它包含源 DStream 和 otherDStream 的所有元素.(不去重)

  2.6 count()

    返回DStream的元素数量,注意:DStream中的Count返回不是直接结果,而是一个包含结果的单元素 DStream

  2.7 reduce(func)

    利用函数 func 聚集源 DStream 中每个 RDD 的元素,返回一个包含单元素(single-element)RDDs 的新 DStream。函数应该是相关联的,以使计算可以并行化

  2.8 reduceByKey(func, [numTasks])

    必须运行在 (K,V)组成的 DStream 中,聚合方式为按key分组,再在每个key分组内执行func进行聚合.返回的元素数量等于key的去重数量.

    numTasks 可以设置执行聚合操作的任务数(默认:spark.default.parallelism)

  2.9 countByValue()

    当调用K类型元素的DStream时,返回(K, Long)对的新DStream,其中每个键的值都是源DStream的每个RDD中的个数,

  2.10 join(otherStream, [numTasks])

    只能运行在两个(K,V)组成的 DStream中,返回两个DStream中Key匹配的记录.

  2.11 cogroup(otherStream, [numTasks])

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

  2.12 transform(func)

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

  2.13 updateStateByKey(func)

    updateStateByKey 是在Streaming体系下,一个用来处理涵盖有历史数据等必须维护数据状态的非常重要的函数.

    随着时间的流逝,在Spark Streaming可以为每个Key通过checkpoint来维护一份state状态(这里的state状态,可以是任意的数据结构).然后通过更新函数对该key状态不断的更新.

    在一个新批次的数据进入后,会对新数据执行更新函数并将结果与老数据进行合并..并且如果最终通过更新函数返回了None值,该Key的State状态会被清除.

    

    因为涉及到对每个Key的state状态的不断更新,就会涉及到状态的保存,所以在updateStateByKey使用中,是必须激活checkpoint的

3.操作(Operation)

猜你喜欢

转载自www.cnblogs.com/NightPxy/p/9292075.html