Apache pig 迭代pig中的字段
我有以下资料:Apache pig 迭代pig中的字段,apache-pig,Apache Pig,我有以下资料: (000001, mfp=621|mdus=4.0|mduc=5.0|mas=1|mpc=4.0|mfn=1|country=ABC) (00002, address=1000+mity|mus=1|name=kailtig+bksyt|mas=1|mpc=4.977552|country=ABC) 000001, ,country=ABC 00002,address=105000+myCity,country=ABC 第一个字段是标识符,而第二个字段包含一组属性。属性字
(000001, mfp=621|mdus=4.0|mduc=5.0|mas=1|mpc=4.0|mfn=1|country=ABC)
(00002, address=1000+mity|mus=1|name=kailtig+bksyt|mas=1|mpc=4.977552|country=ABC)
000001, ,country=ABC
00002,address=105000+myCity,country=ABC
第一个字段是标识符,而第二个字段包含一组属性。属性字段不一致,即有时包含地址属性,有时不包含地址属性
我要做的是,对于每个标识符,我必须找到属性字段是否包含地址和/或国家,并按如下方式输出:
(000001, mfp=621|mdus=4.0|mduc=5.0|mas=1|mpc=4.0|mfn=1|country=ABC)
(00002, address=1000+mity|mus=1|name=kailtig+bksyt|mas=1|mpc=4.977552|country=ABC)
000001, ,country=ABC
00002,address=105000+myCity,country=ABC
我对猪不熟悉,也不太了解。但是,我想的是
谢谢。使用正则表达式提取所需字段。您也可以编写一个UDF来将您的结构转换为一个映射,但在这种情况下,这可能是过分的
DUMP A;
(000001, mfp=621|mdus=4.0|mduc=5.0|mas=1|mpc=4.0|mfn=1|country=ABC)
(00002, address=1000+mity|mus=1|name=kailtig+bksyt|mas=1|mpc=4.977552|country=ABC)
DESCRIBE A;
{(id:chararray, attributes:chararray)}
B =
FOREACH A
GENERATE
id,
REGEX_EXTRACT(attributes, 'address=[^|]+', 0),
REGEX_EXTRACT(attributes, 'country=[^|]+', 0);
请参见
REGEX\u EXTRACT
使用正则表达式提取所需字段。您也可以编写一个UDF来将您的结构转换为一个映射,但在这种情况下,这可能是过分的
DUMP A;
(000001, mfp=621|mdus=4.0|mduc=5.0|mas=1|mpc=4.0|mfn=1|country=ABC)
(00002, address=1000+mity|mus=1|name=kailtig+bksyt|mas=1|mpc=4.977552|country=ABC)
DESCRIBE A;
{(id:chararray, attributes:chararray)}
B =
FOREACH A
GENERATE
id,
REGEX_EXTRACT(attributes, 'address=[^|]+', 0),
REGEX_EXTRACT(attributes, 'country=[^|]+', 0);
请参见REGEX\u EXTRACT