- Apache Pig 教程
- Apache Pig - 首页
- Apache Pig 简介
- Apache Pig - 概述
- Apache Pig - 架构
- Apache Pig 环境
- Apache Pig - 安装
- Apache Pig - 执行
- Apache Pig - Grunt Shell
- Pig Latin
- Pig Latin - 基础
- 加载和存储操作符
- Apache Pig - 读取数据
- Apache Pig - 存储数据
- 诊断操作符
- Apache Pig - 诊断操作符
- Apache Pig - Describe 操作符
- Apache Pig - Explain 操作符
- Apache Pig - Illustrate 操作符
- Pig Latin 内置函数
- Apache Pig - 评估函数
- 加载和存储函数
- Apache Pig - Bag 和 Tuple 函数
- Apache Pig - 字符串函数
- Apache Pig - 日期时间函数
- Apache Pig - 数学函数
- Apache Pig 有用资源
- Apache Pig - 快速指南
- Apache Pig - 有用资源
- Apache Pig - 讨论
Apache Pig - TOKENIZE() 函数
Pig Latin 的TOKENIZE()函数用于将一个字符串(包含一组单词)分割成单个元组,并返回一个包含分割操作结果的Bag。
语法
以下是TOKENIZE()函数的语法。
grunt> TOKENIZE(expression [, 'field_delimiter'])
作为TOKENIZE()函数的分隔符,我们可以传递空格[ ]、双引号[" "]、逗号[ , ]、括号[ () ]、星号[ * ]。
示例
假设我们在HDFS目录/pig_data/中有一个名为student_details.txt的文件,如下所示。此文件包含学生的信息,例如ID、姓名、年龄和城市。如果仔细观察,学生姓名包含由空格[ ]分隔的姓和名。
student_details.txt
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
我们已使用关系名student_details将此文件加载到Pig中,如下所示。
grunt> student_details = LOAD 'hdfs://127.0.0.1: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、姓名、年龄和城市。在姓名列中,此文件包含由各种分隔符分隔的学生的姓和名,如下所示。
details.txt
001,"siddarth""Battacharya",22,Kolkata 002,Rajesh*Khanna,22,Delhi 003,(Preethi)(Agarwal),21,Pune
我们已使用关系名details将此文件加载到Pig中,如下所示。
grunt> details = LOAD 'hdfs://127.0.0.1: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);
使用dump操作符验证tokenize_data关系后,您将得到以下结果。
grunt> Dump tokenize_data; ({(siddarth),(Battacharya)}) ({(Rajesh),(Khanna)}) ({(Preethi),(Agarwal)})
apache_pig_eval_functions.htm
广告