我想使用spark streaming(1.1.0-rc2 Java-API)来处理一些文件,并在处理成功完成后移动/重命名它们,以便将它们推送到其他作业。
我考虑过使用生成的RDD(newAPIHadoopFile)名称中包含的文件路径,但是我们如何确定文件处理的成功结束?
也不确定这是实现它的正确方法,所以欢迎任何想法。
编辑: 这里有一些伪代码要更清楚:
logs.foreachRDD(new Function2<JavaRDD<String>, Time, Void>() {
@Override
public Void call(JavaRDD<String> log, Time time) throws Exception {
String fileName=log.name();
String newlog=Process(log);
SaveResultToFile(newlog, time);
//are we done with the file so we can move it ????
return null;
}
});
答案 0 :(得分:0)
您无法保证输入由HDFS文件支持。但鉴于你的问题,你似乎并不需要这样做。您创建一个新文件并写入一些内容。写完成后,您就完成了。使用其他HDFS API移动它。