【问题标题】:PIG - Can I coarse the result fs -ls into a tuple?PIG - 我可以将结果 fs -ls 粗化成一个元组吗?
【发布时间】:2013-08-28 18:12:22
【问题描述】:

我是猪新手。

在猪脚本中,我可以执行以下操作:

fs -ls

返回:

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

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

【问题讨论】:

    标签: hadoop apache-pig hdfs


    【解决方案1】:

    使用 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 更多

    【讨论】:

    • 我还没有尝试过,但是现在我对猪有了更多的了解,我相信这是正确的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 2016-03-29
    • 2021-01-07
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    相关资源
    最近更新 更多