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)})