求助,spark streaming的DStream怎么实现rdd的api功能
spark streaming 的DStream 要比 Spark的RDD提供的转化、行为的api少很多,比如聚合、排序、去重等(aggregate、sortByKey,distinct)。这些api都需要自己实现么?还是有什么方法能实现这些功能?从《Spark大数据处理技术、应用与性能优化》中找到用transformToPair可以转成rdd处理 对于Dstream,我们可以进行两种操作,transformations 和 output
Transformations
Transformation Meaning
map(func) 对每一个元素执行func方法
flatMap(func) 类似map函数,但是可以map到0+个输出
filter(func) 过滤
repartition(numPartitions) 增加分区,提高并行度
union(otherStream) 合并两个流
count() 统计元素的个数
reduce(func) 对RDDs里面的元素进行聚合操作,2个输入参数,1个输出参数
countByValue() 针对类型统计,当一个Dstream的元素的类型是K的时候,调用它会返回一个新的Dstream,包含<K,Long>键值对,Long是每个K出现的频率。
reduceByKey(func, ) 对于一个(K, V)类型的Dstream,为每个key,执行func函数,默认是local是2个线程,cluster是8个线程,也可以指定numTasks
join(otherStream, ) 把(K, V)和(K, W)的Dstream连接成一个(K, (V, W))的新Dstream
cogroup(otherStream, ) 把(K, V)和(K, W)的Dstream连接成一个(K, Seq, Seq)的新Dstream
transform(func) 转换操作,把原来的RDD通过func转换成一个新的RDD
updateStateByKey(func) 针对key使用func来更新状态和值,可以将state该为任何值
更多参考:
Spark Streaming编程讲解
http://www.aboutyun.com/thread-8900-1-1.html
页:
[1]