我有一个从我的map函数中调用的shell函数。 shell函数需要2个参数 - >输入文件和输出文件。这样直接从HDFS读取文件到shell函数中
$> unix-binary /pathin/input.txt /pathout/output.txt
的问题是什么,这些input.txt的文件驻留在HDFS,需要回写到HDFS的output.txt的文件。目前,我首先将需要的文件fs.copyToLocalFile
复制到本地硬盘,调用unix二进制文件,然后将output.txt写回到HDFS fs.copyFromLocalFile
。 这种方法存在的问题是,它不是最佳的,因为它涉及大量冗余读取和写入硬盘驱动器,从而降低性能。所以,我的问题是,我如何直接读取HDFS文件作为输入并将结果直接输出到HDFS? 显然, $>unix-binary hdfs://master:53410/pathin/input.txt' hdfs://master:54310/pathout/output.txt
将无法正常工作。还有别的办法吗?我能否以某种方式将HDFS文件视为loacl文件? 我有权访问用C语言编写的unix二进制源代码。也许更改源代码会有帮助吗? 谢谢