设为首页 加入收藏

TOP

spark数据流的合并与分支
2018-12-21 13:29:37 】 浏览:46
Tags:spark 数据流 合并 分支
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bluejoe2000/article/details/77868131

spark数据流(data flow)的合并可以通过union来实现。

先测试一下批量数据(batching data)的union:

scala> Seq("1","2","3","4").toDS.union(Seq("a","b","c","d").toDS).show
+-----+
|value|
+-----+
|    1|
|    2|
|    3|
|    4|
|    a|
|    b|
|    c|
|    d|
+-----+

再来测试一下流数据(streaming data)的union:

val lines1 = spark.readStream.format("socket").option("host", "localhost").option("port", 9999).load()
val lines2 = spark.readStream.format("socket").option("host", "localhost").option("port", 8888).load()
val words = lines3.as[String].flatMap(_.split(" "))
val wordCounts = words.groupBy("value").count()
val query = wordCounts.writeStream.outputMode("complete").format("console").start
query.awaitTermination()

分别启动netcat:

nc -lk 9999
nc -lk 8888

测试结果如下:

-------------------------------------------
Batch: 11
-------------------------------------------
+-----+-----+                                                                   
|value|count|
+-----+-----+
|   9b|    2|
| 8888|    1|
|   8b|    2|
|   8c|    2|
|   9a|    2|
|   8a|    2|
|   9c|    2|
| 9999|    1|
+-----+-----+

再来研究分支,如下代码可以理解成分支:

val ds = Seq(1,2,3,4).toDS
val (ds1, ds2) = (ds.filter(_ % 2 == 0), ds.filter(_ % 2 == 1))
ds1.show
ds2.show

这个分支是个假的分支,ds其实被遍历了2次。。。
要实现真的分支,估计只能挂接多个Sink来实现了

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spark菜鸟之路(1):Spark在Wind.. 下一篇知乎上一位朋友总结的特别好的spa..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目