Apache Pig SIZE()函數(shù)

2018-01-02 22:11 更新

Pig Latin的 SIZE() 函數(shù)用于基于任何Pig數(shù)據(jù)類型計(jì)算元素的數(shù)量。

語法

下面給出了 SIZE() 函數(shù)的語法。

grunt> SIZE(expression)

返回值根據(jù)Apache Pig中的數(shù)據(jù)類型而有所不同。

數(shù)據(jù)類型
int,long,float,double對(duì)于所有這些類型,size()函數(shù)返回1。
Char array對(duì)于char數(shù)組,size()函數(shù)返回?cái)?shù)組中的字符數(shù)。
Byte array對(duì)于bytearray,size()函數(shù)返回?cái)?shù)組中的字節(jié)數(shù)。
Tuple對(duì)于元組,size()函數(shù)返回元組中的字段數(shù)。
Bag對(duì)于包,size()函數(shù)返回包中的元組數(shù)。
Map對(duì)于映射,size()函數(shù)返回映射中鍵/值對(duì)的數(shù)量。

假設(shè)在HDFS目錄 /pig_data/ 中有一個(gè)名為 employee.txt 的文件,如下所示。

employee.txt

1,John,2007-01-24,250
2,Ram,2007-05-27,220  
3,Jack,2007-05-06,170  
3,Jack,2007-04-06,100  
4,Jill,2007-04-06,220  
5,Zara,2007-06-06,300  
5,Zara,2007-02-06,350 

通過關(guān)系 employee_data 將此文件加載到Pig中,如下所示。

grunt> employee_data = LOAD 'hdfs://localhost:9000/pig_data/ employee.txt' USING PigStorage(',')
   as (id:int, name:chararray, workdate:chararray, daily_typing_pages:int);

計(jì)算類型的大小

要計(jì)算特定列的類型大小,可以使用 SIZE() 函數(shù)。讓我們計(jì)算name類型的大小,如下所示。

grunt> size = FOREACH employee_data GENERATE SIZE(name);

驗(yàn)證

使用 DUMP 運(yùn)算符驗(yàn)證關(guān)系 size ,如下所示。

grunt> Dump size;

輸出

它將產(chǎn)生以下輸出,顯示關(guān)系 size 的內(nèi)容如下。在示例中,我們計(jì)算了 name 列的大小。由于它是varchar類型,因此 SIZE() 函數(shù)給出每個(gè)員工姓名中的字符數(shù)。

(4) 
(3) 
(4) 
(4) 
(4) 
(4) 
(4) 


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)