Pig TOKENIZE 函数

  • TOKENIZE 函数

    Pig-Latin TOKENIZE()函数用于在单个元组中拆分字符串(包含一组单词),并返回一个包含拆分操作输出的包。
    句法
    下面给出的是TOKENIZE()函数的语法。
    
    grunt> TOKENIZE(expression [, 'field_delimiter']) 
    
    作为TOKENIZE() 函数的分度符,我们可以传递空格[],双引号[“”],逗号[,],括号[()],星号[*]。
    例子
    假设我们在HDFS目录/pig_data/中有一个名为student_details.txt的文件,如下所示。该文件包含学生的详细信息,例如ID,姓名,年龄和城市。如果我们仔细观察,学生的姓名包括用空格[]分隔的名字和姓氏。
    
    001,Rajiv Reddy,21,Hyderabad
    002,siddarth Battacharya,22,Kolkata 
    003,Rajesh Khanna,22,Delhi 
    004,Preethi Agarwal,21,Pune 
    005,Trupthi Mohanthy,23,Bhuwaneshwar 
    006,Archana Mishra,23 ,Chennai 
    007,Komal Nayak,24,trivendram 
    008,Bharathi Nambiayar,24,Chennai 
    
    我们已经将该文件加载到Pig中,关系名称为Student_details,如下所示。
    
    grunt> student_details = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',')
       as (id:int, name:chararray, age:int,  city:chararray);
    
  • 标记字符串

    我们可以使用TOKENIZE()函数拆分字符串。作为示例,让我们使用此函数拆分名称,如下所示。
    
    grunt> student_name_tokenize = foreach student_details  Generate TOKENIZE(name);
    
    验证
    如下所示,使用DUMP运算符验证关系Student_name_tokenize。
    
    grunt> Dump student_name_tokenize;
    
    输出
    它将产生以下输出,显示如下student_name_tokenize关系的内容。
    
    ({(Rajaiv),(Reddy)})
    ({(siddarth),(Battacharya)})
    ({(Rajesh),(Khanna)})
    ({(Preethi),(Agarwal)})
    ({(Trupthi),(Mohanthy)})
    ({(Archana),(Mishra)})
    ({(Komal),(Nayak)})
    ({(Bharathi),(Nambiayar)})
    
  • 其他分隔符

    以相同的方式,包括空格[],TOKENIZE()函数接受双引号[“”],逗号[,],括号[()],星号[*]作为分隔符。
    例子
    假设有一个名为details.txt的文件,其中包含学生的详细信息,例如ID,姓名,年龄和城市。在名称列下,此文件包含用各种分隔符分隔的学生的名字和姓氏,如下所示。
    
    001,"siddarth""Battacharya",22,Kolkata 
    002,Rajesh*Khanna,22,Delhi 
    003,(Preethi)(Agarwal),21,Pune 
    
    我们已将该文件加载到Pig中,其关系名称详细信息如下所示。
    
    grunt> details = LOAD 'hdfs://localhost:9000/pig_data/details.txt' USING PigStorage(',')
       as (id:int, name:chararray, age:int,  city:chararray);
    
    现在,尝试使用TOKENIZE()如下分隔学生的名字和姓氏。
    
    grunt> tokenize_data = foreach details Generate TOKENIZE(name);
    
    使用转储运算符验证tokenize_data关系时,您将得到以下结果。
    
    grunt> Dump tokenize_data;
    
    ({(siddarth),(Battacharya)})
    ({(Rajesh),(Khanna)})
    ({(Preethi),(Agarwal)})