我在这里有一些(非常简化的)nodejs代码:
var fs = require('fs');
var derpfile = String(fs.readFileSync( './derp.txt', 'utf-8' ));
var derps = derpfile.split( '\n' );
for (var i = 0; i < derps.length; ++i) {
// do something with my derps here
}
问题是,我不能在 Pig UDF 中使用节点(我知道;如果我能做到这一点,请告诉我!)。当我在 javascript 中查看“文件 io”时,我看到的所有教程都在浏览器沙箱中。我需要从文件系统中读取一个文件,例如hdfs:///foo/bar/baz/jane/derps.txt
,我不能保证它会在 CWD 中,但我将有权访问它。所有这些教程似乎也涉及异步读取。我真的需要在这里进行阻塞调用,因为在读取此文件之前无法开始猪作业。还有很多关于如何从另一个站点下拉 URL 的解释。
这有点令人难以置信的令人沮丧,因为使用 Java 来完成这项任务是可怕的矫枉过正,而 javascript 确实是工作的正确工具(好吧,好吧,perl是,但我不能选择那个......),我在像基本文件 IO 这样简单的事情上受阻。:(