Pig SIZE 函数

  • SIZE 函数

    Pig-Latin SIZE()函数用于基于任何Pig数据类型计算元素数。
    句法
    下面给出的是SIZE() 函数的语法。
    
    grunt> SIZE(expression)
    
    返回值根据Apache Pig中的数据类型而有所不同。
    • int,long,float,double - 对于所有这些类型,size函数将返回1。
    • 字符数组 对于char数组 - , size() 函数返回数组中的字符数。
    • 字节数组 对于字节数组 - , size() 函数返回数组中的字节数。
    • tuple(元组) 对于一个元组 - ,size() 函数返回该元组中的字段数。
    • bag 对于包 - , size() 函数返回包中的元组数。
    • map 对于映射 - , size() 函数返回地图中键/值对的数量。
    例子
    假设我们在HDFS目录/pig_data/中有一个名为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 
    
    并且我们已将这个文件以关系名称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);
    
  • 计算类型的大小

    要计算特定列的类型的大小,我们可以使用SIZE()函数。让我们计算名称类型的大小,如下所示。
    
    grunt> size = FOREACH employee_data GENERATE SIZE(name);
    
    验证
    如下所示,使用DUMP运算符验证关系大小。
    
    grunt> Dump size;
    
    输出
    它将产生以下输出,显示关系大小的内容,如下所示。在示例中,我们计算了名称列的大小。由于它是varchar类型的,因此SIZE()函数为您提供了每个雇员姓名中的字符数。
    
    (4) 
    (3) 
    (4) 
    (4) 
    (4) 
    (4) 
    (4)