PIG - 我可以将结果fs -ls粗化为元组吗?

时间:2013-08-28 18:12:22

标签: hadoop apache-pig hdfs

我是猪的新手。

在猪脚本中我可以做类似的事情:

fs -ls

返回:

drwx------   - user group          0 2013-08-28 00:00 .Trash
drwx------   - user group          0 2013-08-02 19:19 .staging
...
...
...

有没有办法可以将fs -ls的结果粗略化为元组?

1 个答案:

答案 0 :(得分:0)

使用Java jar你可以很容易地做到这一点: 首先,您应该在目录之外创建序列文件。 然后在加载器中你应该放置如下代码。 然后使用此加载器加载序列文件,结果将按预期进行。

在getNext方法(Loader)中,你应该根据你的目的编写这样的代码

    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 more