hadoop - 根据输入数字生成不同数量的列

标签 hadoop apache-pig

假设我有一些具有未知数目的子节点的XML数据。有没有一种方法可以让我将子节点的数量作为参数输入到程序中,并对其进行处理?当前代码是这样的

    SourceXML = LOAD '$input' using org.apache.pig.piggybank.storage.XMLLoader('$TopNode') as test:chararray;

test2 = LIMIT SourceXML 3;

test3 = FOREACH test2 GENERATE REGEX_EXTRACT(test,'<$tag1>(.*)</$tag1>',1),
    REGEX_EXTRACT(test,'<$tag2>(.*)</$tag2>',1);

dump test3;

但是我可能事先不知道目标数据中有多少个简单元素(有多少个$ tag#)。我希望使用一个包含如下所示参数的.txt文件:

input=/inputpath/lowerlevelsofpath

numberSimpleElements=3

tag1=tag1name

tag2=tag2name

tag3=tag3name



通过对输入文件中的每个标签进行regex_extract

关于如何实现此目标的任何想法?

最佳答案

你可以做以下

  • 用正则表达式分割文本,以便现在每行都具有值。
  • 为每一行生成(标签,值)
  • 在(标签,值)和(标签列表)之间进行联接
  • 关于hadoop - 根据输入数字生成不同数量的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19098406/

    相关文章:

    java - 无法找到 LoginModule 类 : com. sun.security.auth.module.UnixLoginModule

    hadoop - 如何从 PIG 中生成的包(其大小可能不同)中提取第一个元组?

    hadoop - 如何使用pig从hdfs加载twitter数据?

    join - pig - 加入不起作用

    apache-pig - 将分隔字符数组扩展为多个元组

    hadoop - 如何将单元格拆分成单独的行并找到最小汇总值

    apache-spark - 无法在 yarn 簇上运行 Spark 作业:连接失败异常

    hadoop - 尝试更改配置单元中的列类型,运行 DDL,但抛出错误“

    java - MapReduce 程序产生空输出

    java - 记录 MapReduce 作业的标准做法