首页 新闻 搜索 专区 学院

关于spark streaming,如何输出程序产生的中间结果

0
悬赏园豆:30 [已解决问题] 解决于 2017-05-24 17:33

刚刚学习spark streaming,程序每次都是以 --master local[2]的模式跑。发现这样一个问题:当使用命令 

bin/spark-submit  --class com.xxxxx.sparkStreaming.XxxXxx --master local[2] xxxxxx.jar parameter1 parameter2 parameter3 parameter4

后,程序只能输出DStream的动作,例如我这里的

 

1 //res_records是一个DStream
2 res_records.print()
3 //recordsMap是中间过程产生的一个Map
4 recordsMap.map(x => (x._1, x._2.toList.sortBy(_._1))).foreach(println)

最终的界面输出只有res_records.print()的结果。如图:

请教各路神仙!

应该如何输出这种中间结果呢?(豆子不多了,望见谅!)

问题补充:

经过测试发现,如果这个输出的方法不放在DStream.print()的后面,比如放在一个计算用的方法里面,这个内容就会被输出了。还请各位指点!

说的不清楚的地方还请指出。

chen-kh的主页 chen-kh | 初学一级 | 园豆:116
提问于:2016-12-20 21:53
< >
分享
最佳答案
0

DStreams.print()

该方法是在每个批数据中打印前10条元素。

 

收获园豆:30
CaiYongji | 小虾三级 |园豆:1267 | 2016-12-21 10:57

这个不影响吧,关键是后面的输出没有显示出来啊,所以我不是很懂。。。

chen-kh | 园豆:116 (初学一级) | 2016-12-21 16:19

@chen-kh: 

你可以试试把Log 输出到文件用这个方法

  • saveAsTextFiles(prefix, [suffix]):将当前Dstream保存为文件,每个interval batch的文件名命名规则基于prefix和suffix:"prefix-TIME_IN_MS[.suffix]".
CaiYongji | 园豆:1267 (小虾三级) | 2016-12-26 10:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册