Apache Pig - BagToString() 函数

Pig Latin BagToString() 函数用于将包中的元素连接成字符串。连接时,我们可以在这些值之间放置分隔符(可选)。

一般情况下,包是无序的,可以使用ORDER BY运算符进行排列。

语法

下面给出的是 BagToString() 函数的语法。

grunt> BagToString(vals:bag [, delimiter:chararray])

示例

假设我们在HDFS目录/pig_data/中有一个名为dateofbirth.txt的文件,如下所示。 该文件包含出生日期。

dateofbirth.txt

22,3,1990
23,11,1989
1,3,1998
2,6,1980
26,9,1989

我们已将此文件加载到 Pig 中,关系名称为 dob,如下所示。

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)})

在这里,我们可以观察到一个包,其中包含所有出生日期作为元组。 现在,让我们使用函数 BagToString() 将包转换为字符串。

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)

apache_pig_eval_functions.html