拆分 Pig 元组

Splitting Pig tuple

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

 (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\)

是的,您可以使用 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\)