如何指定封闭在pig中?

qlckcl4x  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(216)

我正在写一个pig脚本,我的数据是用空格分隔的,在一些列之间有空格,但用双引号括起来(“)下面是我的样例相似数据:

a b c d e "f f1 f2" g
a1 b1 c1 d1 e1 "f1 f11 f12" g1

我试图实现a到g列,其中f1和f2在f下,但是我得到了两个额外的f1和f2列,它们应该在f列中

a = load 'file.txt' Using PigStorage(' ');

我怎样才能在Pig身上做到这一点?
更新的数据

a b c d e "f f1 f2" g
a1 b1 c1 d1 e1 "f1 f11 f12" g1
a1 b1 c1 d1 e1 "fgn f1 f11 f12" g1
a1 b1 c1 d1 e1 f1 g1
byqmnocz

byqmnocz1#

你可以用regex来解决这个问题,你能试试下面的方法吗?
输入:

a b c d e "f f1 f2" g
a1 b1 c1 d1 e1 "f1 f11 f12" g1
a1 b1 c1 d1 e1 "fgn f1 f11 f12" g1
a1 b1 c1 d1 e1 f1 g1

Pig手稿:

A = LOAD 'input' AS (line:chararray);
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(\\w+)\\s+(\\w+)\\s+(\\w+)\\s+(\\w+)\\s+(\\w+)\\s+"?([A-Za-z0-9\\s]+)"?\\s+(\\w+)')) AS (col1,col2,col3,col4,col5,col6,col7);
DUMP B;

输出:

(a,b,c,d,e,f f1 f2,g)
(a1,b1,c1,d1,e1,f1 f11 f12,g1)
(a1,b1,c1,d1,e1,fgn f1 f11 f12,g1)
(a1,b1,c1,d1,e1,f1,g1)

现在 col6 变量将存储值 "f f1 f2" 以及 "f1 f11 f12" 作为一个整体。

相关问题