apache-spark - 如何仅在收到数据时制作 Spark Streaming 保存文件?
问题描述
我正在开发一个非常简单的 spark 流应用程序,它从 s3 位置获取 inputTextFiles 并进行一些转换,然后再次将结果输出到某个 s3 位置。但问题是
JavaPairDStream<String, String> pairs = lines.mapToPair(
line -> new Tuple2<String, String>(line, fetcher.fetchAndSaveUrl(process(line) ))
);
pairs.dstream().saveAsTextFiles(s3Path + "/output", "output");
如果在特定的批处理间隔中未使用名为 _SUCCESS 的空文件进行处理,则保存文件事件。如何确保仅在读取某些输入时才保存文件?
解决方案
您需要过滤我们的空 RDD(即检查 rdd.count() 或 rdd,isEmpty(),无论您发现什么更合适)。为此,您需要以使用 foreachRDD() 的方式重写对 DStream 的操作。
推荐阅读
- powershell - 无法通过 powershell 将 IIS 中网站下的 Web 应用程序的表单身份验证设置为“已启用”
- python - 我正在尝试将不同的参数传递给每个时间表的函数,如下所示,
- python - 用于 Raspberry 0W 监控摄像头的 python 写入 NAS
- rust - 构建紫红色内核锆石时缺少 rust_tools.cipd_version
- python - 未找到使用 cython 的调试器加速
- api - API过滤参数未定义与空?
- python - Pandas:如何在现有 DataFrame 的列上设置索引?
- lldb - 如何使 LLDB 能够打印 STL 容器的内容?
- apache-spark - java.io.FileNotFoundException:即使我缓存文件也不存在
- c++ - QT中qdebug和cout的区别