与 RDD 类似,DStream 也提供了自己的一系列操作方法,这些操作可以分成 3 类:普通的转换操作、窗口转换操作和输出操作。
普通的转换操作
普通的转换操作如表 1 所示
Suo | 描述 |
---|---|
map(func) | 源 DStream 的每个元素通过函数 func 返回一个新的 DStream。 |
flatMap(func) | 类似于 map 操作,不同的是,每个输入元素可以被映射出 0 或者更多的输出元素 |
filter(func) | 在源 DStream 上选择 func 函数的返回值仅为 true 的元素,最终返回一个新的 DStream。 |
repartition(numPartitions) | 通过输入的参数 numPartitions 的值来改变 DStream 的分区大小 |
union(otherStream) | 返回一个包含源 DStream 与其他 DStream 的元素合并后的新 DStream |
count() | 对源 DStream 内部所含有的 RDD 的元素数量进行计数,返回一个内部的 RDD 只包含一个元素的 DStream |
reduce(func) | 使用函数 func(有两个参数并返回一个结果)将源 DStream 中每个 RDD 的元素进行聚合操作,返回一个内部所包含的 RDD 只有一个元素的新 DStream |
countByValue() | 计算 DStream 中每个 RDD 内的元素出现的频次并返回新的 DStream(<K,Long>),其中,K 是 RDD 中元素的类型,Long 是元素出现的频次 |
reduceByKey(func,[numTasks]) | 当一个类型为 <K,V> 键值对的 DStream 被调用的时候,返回类型为键值对的新 DStream,其中每个键的值 V 都是使用聚合函数 func 汇总的。可以通过配置 numTasks 设置不同的并行任务数 |
join(otherStream,[numTasks]) | 当被调用类型分别为 <K,V> 和 <K,W> 键值对的两个 DStream 时,返回一个类型为 <K,<V,W>> 键值对的新 DStream |
cogroup(otherStream,[numTasks]) | 当被调用的两个 DStream 分别含有 <K,V> 和 <K,W>键值对时,返回一个 <K,Seq[V],seq[W]> 类型的新的 DStream |
transform(func) | 通过对源 DStream 的每个 RDD 应用 |