scala - 如何修复 textfilestream 代码的空输出
问题描述
object abc {
def main(args: Array[String]) = {
m()
}
def m() {
val spark = SparkSession.builder.appName("ola").master("local[*]").getOrCreate
val sc = spark.sparkContext
val ssc = new StreamingContext(sc, Seconds(5))
var cnt = sc.longAccumulator("cnt")
cnt.value
import spark.implicits._
val x = ssc.textFileStream("file:///home/xyz/folderone/")
x.foreachRDD{ rddx =>
val x2 = rddx.map { xxx =>
cnt.add(1)
xxx
}
x2.toDF.write.format("text").mode("overwrite").save("file:///home/xyz/oparekta")
}
println(s"value of count ${cnt.value}")
ssc.start()
ssc.awaitTermination()
}
上面的代码是从给定的文件夹路径处理文件,不知何故代码中有一些问题,得到空的输出文件,可能是什么原因?
解决方案
尝试这样的事情来避免处理空数据:
...
QS.foreachRDD(q => {
if(!q.isEmpty) {
...
此外,需要考虑覆盖附加。不确定您的用例,可能是疏忽。
推荐阅读
- python - 使用自定义 __getitem__ 方法的参数解包永远不会终止
- dictionary - 列出公会中的所有成员 (djs v12)
- content-security-policy - 基于登录状态和浏览器的不同 CSP?
- java - 无法使用 Android 应用通过 API 下载数据
- google-chrome - 如何从扩展的后台脚本在 websocket 连接中发送 cookie?
- html - 为什么我的 CSS Grid 行没有跨越整个行宽?为什么我的网格行设置不正确?
- flutter - Flutter 在用户 onTap 上改变标记的颜色
- java - 内存位置如何在链表中自我清理?
- c++ - function.part.10 在 GDB 环境中是什么意思?
- javascript - res.render() 不渲染 ejs 文件,没有抛出错误 node.js app