Apache Pig BagToString()函數(shù)

2018-01-02 20:52 更新

Pig Latin的  BagToString() 函數(shù)用于將包的元素連接成字符串。在連接時,我們可以在這些值之間放置分隔符(可選)。通常,包是無序的,可以使用 ORDER BY 運(yùn)算符排序。

語法

下面給出了 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);

將包轉(zhuǎn)換為字符串

使用 bagtostring() 函數(shù),我們可以將bag中的數(shù)據(jù)轉(zhuǎn)換為字符串。讓我們將 dob 關(guān)系分組,組操作將生成含有關(guān)系的所有元組的包。

使用Group All運(yùn)算符將關(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 運(yùn)算符驗證關(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)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號