2014-08-29 63 views
1

我想使用Spark Streaming(1.1.0-rc2 Java-API)来处理一些文件,并在处理成功完成后移动/重命名它们,以便将它们推送到其他工作。Apache Spark移动/重命名成功处理的文件

我想过如何使用生成的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

这是什么意思,在这里处理文件? – 2014-08-29 22:56:06

+0

@SeanOwen基本上,我通过应用一些转换来创建对应的RDD(每行)的丰富版本,然后将结果写入输出目录 – Aminouvic 2014-08-30 00:03:05

+0

那么当你完成后你怎么不知道?你的代码完成手动写入文件否? – 2014-08-30 07:19:55

回答

0

您无法保证输入是由HDFS文件支持的。但看起来你不需要这样的问题。您创建一个新文件并写入一些内容。写入完成后,就完成了。将其与其他HDFS API一起移动。

+0

其实我需要移动原始文件(用于生成RDD的文件) – Aminouvic 2014-08-30 16:52:15