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

标签 hadoop apache-pig hdfs

我是 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/

相关文章:

azure - 在处理数据时如何在 Azure HDInsight 中实现数据分布

hadoop - 验证 Cloudera Hadoop 服务是否在容器中运行

java - Hadoop MapReduce 程序在 Eclipse 中运行良好,但在导出到 .jar 文件时运行不佳

hadoop - 元数据中的错误:MetaException(消息:java.lang.IllegalStateException:无法覆盖原因)

sql - 在Impala/Hive中删除多个分区

datetime - hdfs 文件时间戳

hadoop fs –put 未知命令

hadoop - Google云存储-Tez输出文件

hadoop - 运行 PIG 脚本时出错

hadoop - pig : Running two aggregation functions