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