我是 pig 的新手。
在 pig 脚本中,我可以执行以下操作:
fs -ls
返回:
drwx------ - user group 0 2013-08-28 00:00 .Trash
drwx------ - user group 0 2013-08-02 19:19 .staging
...
...
...
有什么方法可以将
fs -ls
的结果粗化为元组吗?
最佳答案
使用Java jar,您可以很轻松地完成以下操作:
首先,您应该在目录外创建序列文件。
然后在加载程序中,应将如下代码放入。
然后使用此加载器加载序列文件,结果将与预期的一样。
在(Loader的)getNext方法中,应根据您的目的编写这样的代码
ProcessBuilder scanProcess = new ProcessBuilder("strings",file_name);
final Process process = scanProcess.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line,resLine="";
while ((line = br.readLine()) != null)
{
if(!line.isEmpty())
{
resLine += line;
}
}
protoTuple.add(resLine);
return tupleFactory.newTuple(protoTuple);
在resLine中,将存储命令执行的结果。
要传递命令行参数,您可以探索ProcessBuilder和Process更多
关于hadoop - pig -我可以将结果fs -ls粗化为元组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18495277/