Apache Pig - SIZE() 函数
Pig Latin 的 SIZE() 函数用于计算基于任何 Pig 数据类型的元素数量。
语法
下面给出的是 SIZE() 函数的语法。
grunt> SIZE(expression)
返回值根据 Apache Pig 中的数据类型而有所不同。
数据类型 | 返回值 |
---|---|
int, long, float, double | 对于所有这些类型,size 函数返回 1。 |
Char array | 对于 char 数组,size() 函数返回数组中的字符数。 |
Byte array | 对于字节数组,size()函数返回数组中的字节数。 |
Tuple | 对于元组,size()函数返回元组中的字段数。 |
Bag | 对于包,size()函数返回包中元组的数量。 |
Map | 对于映射,size() 函数返回映射中键/值对的数量。 |
示例
假设我们在 HDFS 目录 /pig_data/ 中有一个名为 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
我们已将此文件加载到 Pig 中,关系名称为 employee_data,如下所示。
grunt> employee_data = LOAD 'hdfs://localhost:9000/pig_data/ employee.txt' USING PigStorage(',') as (id:int, name:chararray, workdate:chararray, daily_typing_pages:int);
计算类型的大小
要计算特定列类型的大小,我们可以使用SIZE()函数。 让我们计算一下名称类型的大小,如下所示。
grunt> size = FOREACH employee_data GENERATE SIZE(name);
验证
使用DUMP运算符验证关系大小,如下所示。
grunt> Dump size;
输出
它将产生以下输出,显示关系size的内容,如下所示。 在示例中,我们计算了 name 列的大小。 由于它是 varchar 类型,因此 SIZE() 函数可为您提供每个员工姓名中的字符数。
(4) (3) (4) (4) (4) (4) (4)
apache_pig_eval_functions.html