拆分猪元组

时间:2015-03-25 12:13:48

标签: hadoop apache-pig

我想使用pig script将以下元组拆分为两个元组。

 (key=bb7bde5661923b947ce59958773e85c5\,\/css\/bootstrap.min.cssHTTP\/1.1\,\/con-us.php,\/con-us.phpHTTP\/1.1\)

我想要输出如下:

(key=bb7bde5661923b947ce59958773e85c5\)     (\/css\/bootstrap.min.cssHTTP\/1.1\,\/con-us.php,\/con-us.phpHTTP\/1.1\)

1 个答案:

答案 0 :(得分:0)

是的,您可以使用REGEX and TOTUPLE功能解决此问题。首先将字符串拆分为两部分,第一列在第一个逗号之前,第二列是剩余字符串。最后将两列转换为元组并存储它。

<强>输入

key=bb7bde5661923b947ce59958773e85c5\,\/css\/bootstrap.min.cssHTTP\/1.1\,\/con-us.php,\/con-us.phpHTTP\/1.1\

<强> PigScript:

A = LOAD 'input' AS (line:chararray);
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'^([^,]+),(.*)$')) AS (col1,col2);
C = FOREACH B GENERATE TOTUPLE(col1),TOTUPLE(col2);
STORE C INTO 'output';

输出(将存储在output/part*文件中)

(key=bb7bde5661923b947ce59958773e85c5\) (\/css\/bootstrap.min.cssHTTP\/1.1\,\/con-us.php,\/con-us.phpHTTP\/1.1\)