【问题标题】:Load file in pig based on whitespace基于空格在猪中加载文件
【发布时间】:2016-03-23 18:45:13
【问题描述】:

我正在尝试在 PIG 中加载一个文件,其中 2 个单词可能用空格或制表符分隔(我可能不止一个)。有没有办法使用空格的正则表达式来分隔文件加载?或者有没有其他方法可以实现以下?

输入:

COUNTESS    This young gentlewoman had a father,--O, that`

输出:

COUNTESS  
This  
young  
gentlewoman  
had  
a  
father,--O,  
that

如果有逗号分隔符也很好,但这会使它更复杂。目前,只有空格分隔符对我有用。

【问题讨论】:

    标签: regex file apache-pig whitespace delimiter


    【解决方案1】:

    将文件加载为一行,然后使用TOKENIZE。如果您同时使用制表符和空格,则在加载数据后添加一个步骤,将制表符替换为行中的空格,然后使用 TOKENIZE。

    A = LOAD 'test2.txt' as (line:chararray);
    B = FOREACH A GENERATE FLATTEN(TOKENIZE(A.$0));
    C = FOREACH B GENERATE TOBAG(*);
    DUMP C;
    

    输出

    【讨论】:

      【解决方案2】:

      我不太了解 PIG,但这里有一些信息:

      https://pig.apache.org/docs/r0.9.1/func.html#strsplit

      STRSPLIT(string, regex, limit)
      

      正则表达式可能类似于[\s,]+。这将拆分任何空格和逗号块。例如,a b,c ,d, e 将拆分为每个字母。空格和逗号的顺序无关紧要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多