使用.NET SDK,我正在使用Azure HDInsight进行一些日志文件解析。看似简单的事情,比如将输出文件格式从“part-xxxxx”更改为与输入文件名相关的内容,似乎相当复杂,而且文档很少。
基于我在output file formats in Hadoop中看到的一般情况,看起来这不是我可以根据模板更改的设置(然后可以使用.NET中的HadoopJobConfiguration.AdditionalGenericArguments输入) SDK),但是一些实际的Java代码,似乎表明完成这项工作的唯一方法是将我的解决方案重新编码为实际的Java类。
建议?
答案 0 :(得分:0)
这是一个基本的Hadoop事情。
Hadoop作业将始终以part-nnnnn格式输出文件,您可以指定的唯一位是它们将进入的baseOutputDirectory路径,因此您当然可以使用该目录将输出与输入相关联。
原因是每个reducer必须有自己的输出文件。
如果您正在对Hadoop中的输出进行任何进一步处理,例如Hive,那么这不应该太困难,因为使用的InputFormats将为您拾取所有part-nnnnn文件。
也就是说,您可以提供MultipleOutputFormat类的子类来控制文件名的模式,但这需要使用Java,因为您无法使用流API编写OutputFormats。
另一个选项可能是使用Azure存储客户端进行合并,并在
后重命名输出文件