我发现如何根据Spark中的键值编写多个输出,但是我需要使用追加模式编写相同的内容。
我正在使用saveAsHadoopFile()
来编写文件,但是我的generateFileNameForKeyValue()
方法返回的文件名基于与许多键类似的键,因此它会覆盖这些文件。
是否可以在追加模式下写入这些文件?
一种替代方法是在saveAsHaddopFile()之前使用groupByKey()。 我不想使用groupByKey(),因为涉及太多的改组。
我的代码段:
public class OutputFormat extends MultipleTextOutputFormat<String, CensusData2> {
public OutputFormat(){
}
@Override
protected String generateActualKey(String key, CensusData2 value) {
return null;
}
@Override
protected String generateFileNameForKeyValue(String key, CensusData2 value, String name) {
String fileName=key.replaceAll(" ", "").replaceAll("[^a-zA-Z0-9_-]", "")+"."+name+".out";
return fileName;
}
}