2015-03-25 2 views
0

Я хочу разбить следующий кортеж на два кортежа, используя скрипт свиньи.Сплит-свинг-кортеж

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

ответ

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\) 
+0

спасибо, что сработало для меня ... –