spark stream中的dstream对象saveAsTextFiles问题
来源:互联网 发布:国产好电影 知乎 编辑:程序博客网 时间:2024/06/02 05:55
利用spark streaming从kafka读取数据,进行流数据的统计分析,最后产生dstream类型的结果集,但是涉及到数据的保存时,遇到了一点小障碍。
我们都知道,spark中普通rdd可以直接只用saveAsTextFile(path)的方式,保存到本地,hdfs中,但是dstream对象没有saveAsTextFile()方法,只有saveAsTextFiles()方法,而且,其参数只有
prefix: String, suffix: String = ""
官方api对该方法的介绍如下:
Save each RDD in this DStream as at text file,using string representation of elements. The file name at each batch intervalis generated based onprefix
and suffix
:"prefix-TIME_IN_MS.suffix".
大致意思是将prefix与suffix后缀,中间加上time来拼接,找不到输入path的地方,此处纠结了好久。
后来通过查看源码可以发现这里边有个地方一直被忽视了。
源码如下:
defsaveAsTextFiles(prefix: String, suffix:String = ""): Unit = ssc.withScope {
val saveFunc = (rdd: RDD[T], time: Time) => {
val file = rddToFileName(prefix, suffix,time)
rdd.saveAsTextFile(file)
}
this.foreachRDD(saveFunc)
}
其实在saveAsTextFiles方法中又调用了saveAsTextFile方法,所以path路径应该是在此处指定的,即:我们需要将path包含在prefix中。
至此,我想前边的疑惑也就全部都解开了。
saveAsTextFiles()方法的用法其实跟saveAsTextFile()一模一样,只不过比它多了一个拼接时时间的过程。
所以,我们保存dstream对象,完全可以这样写:
Val result_predict=model.predictOnValues(test_data).map(ss=>(ss._1+","+ss._2)).map(lines=>lines.split(","))
.map(arr=>(arr(0),arr(1),arr(2),"crm_ia_loginqry"))
result_predict.print()
result_predict.saveAsTextFiles("hdfs://ip:port/home/songsf/data/result1")
- spark stream中的dstream对象saveAsTextFiles问题
- Spark源码解析:DStream
- spark stream上创建对象实例
- Spark Streaming介绍,DStream,DStream相关操作(来自学习资料)
- Spark Streaming之二:DStream解析
- Spark Streaming——DStream Transformation操作
- [spark streaming] DStream 和 DStreamGraph 解析
- spark学习五 DStream(spark流式数据处理)
- ####好#####DStream中的转换(transformation)
- spark学习六 DStream的运行原理解析
- spark streaming源码分析4 DStream相关API
- Apache Spark源码走读之4 -- DStream实时流数据处理
- spark streaming源码分析4 DStream相关API
- 图解StreamingContext、DStream、Receiver 第三讲spark streaming
- spark streaming 中对DStream 的两个操作
- Spark Streaming 实战案例(三) DStream Window操作
- Spark Streaming自定义数据源-实现自定义输入DStream和接收器
- 6.Spark Streaming:输入DStream和Receiver详解
- 不错的感悟
- IDF实验室CTF题解——WEB(更新中,已完成5/7)
- 美团测试开发笔试
- Xcode6升Xcode7遇到的问题及解决办法
- 自学安卓复习基础_之八(关于重写页面布局,引用自定义页面布局)
- spark stream中的dstream对象saveAsTextFiles问题
- foreach简化数组和集合的遍历
- 关于XCode升级,所安装插件失效的解决办法
- Android-MaterialRefreshLayout
- ListView的Item静态绑定
- 继承ListActivity
- iOS Label添加删除线
- 设置Item单选模式多选模式
- web前端深夜吐槽