Pig Latin的 BagToString() 函數(shù)用于將包的元素連接成字符串。在連接時,我們可以在這些值之間放置分隔符(可選)。通常,包是無序的,可以使用 ORDER BY 運算符排序。
下面給出了 BagToString() 函數(shù)的語法。
grunt> BagToString(vals:bag [, delimiter:chararray])
假設(shè)在HDFS目錄 /pig_data/ 中有一個名為 date of birth.txt 的文件,如下所示。 此文件包含出生日期。
dateofbirth.txt
22,3,1990 23,11,1989 1,3,1998 2,6,1980 26,9,1989
通過關(guān)系 dob 將這個文件加載到Pig中,如下所示。
grunt> dob = LOAD 'hdfs://localhost:9000/pig_data/dateofbirth.txt' USING PigStorage(',') as (day:int, month:int, year:int);
使用 bagtostring() 函數(shù),我們可以將bag中的數(shù)據(jù)轉(zhuǎn)換為字符串。讓我們將 dob 關(guān)系分組,組操作將生成含有關(guān)系的所有元組的包。
使用Group All運算符將關(guān)系 dob 分組,并將結(jié)果存儲在名為 group_dob 的關(guān)系中,如下所示。
grunt> group_dob = Group dob All;
它將產(chǎn)生如下所示的關(guān)系。
grunt> Dump group_dob; (all,{(26,9,1989),(2,6,1980),(1,3,1998),(23,11,1989),(22,3,1990)})
在這里,我們可以觀察到一個有所有出生日期的包作為它的元組。現(xiàn)在,讓我們使用函數(shù) BagToString() 將包轉(zhuǎn)換為字符串。
grunt> dob_string = foreach group_dob Generate BagToString(dob);
使用 DUMP 運算符驗證關(guān)系 dob_string ,如下所示。
grunt> Dump dob_string;
它將產(chǎn)生以下輸出,顯示關(guān)系 dob_string 的內(nèi)容。
(26_9_1989_2_6_1980_1_3_1998_23_11_1989_22_3_1990)
更多建議: