Pig BagToString 函数

  • BagToString 函数

    Pig-Latin BagToString() 函数用于将包的元素连接成字符串。连接时,我们可以在这些值之间放置一个定界符(可选)。通常,bag是无序的,可以使用ORDER BY运算符进行排列。
    句法
    下面给出的是BagToString() 函数的语法。
    
    grunt> BagToString(vals:bag [, delimiter:chararray])
    
    例子
    假设我们在HDFS目录/pig_data/中有一个名为dateofbirth.txt的文件,如下所示。该文件包含出生日期。
    
    22,3,1990
    23,11,1989
    1,3,1998
    2,6,1980
    26,9,1989
    
    并且我们已经将该文件加载到Pig中,关系名称为student_details,如下所示。
    
    grunt> dob = LOAD 'hdfs://localhost:9000/pig_data/dateofbirth.txt' USING PigStorage(',')
       as (day:int, month:int, year:int);
    
  • 将包转换为字符串

    使用bagtostring() 函数,我们可以将bag中的数据转换为字符串。让我们对DOB关系进行分组。分组操作将产生一个包含该关系的所有元组的包。使用“Group All”运算符对关系dob进行分组,并将结果存储在名为group_dob的关系中,如下所示。
    
    grunt> group_dob = Group dob All;
    
    这将产生如下所示的关系。
    
    grunt> Dump group_dob; 
     
    (all,{(26,9,1989),(2,6,1980),(1,3,1998),(23,11,1989),(22,3,1990)})
    
    在这里,我们可以看到一个bag,其中包含所有出生日期作为其元组。现在,让我们使用BagToString() 函数将bag转换为字符串。
    
    grunt> dob_string = foreach group_dob Generate BagToString(dob); 
    
  • 验证

    如下所示,使用DUMP运算符验证关系dob_string。
    
    grunt> Dump dob_string;
    
    输出
    它将产生以下输出,显示关系dob_string的内容。
    
    (26_9_1989_2_6_1980_1_3_1998_23_11_1989_22_3_1990)