1. 加载数据(LOAD):
LOAD 关键字用于将数据加载到Pig中。数据可以来自多种数据源,如文本文件、HBase表等。语法如下:
data = LOAD 'input.txt' USING PigStorage(',') AS (name:chararray, age:int);
上述示例将逗号分隔的文本文件加载到Pig中,并指定了数据的字段和类型。
2. FOREACH:
FOREACH 关键字用于对每个元组执行操作,类似于关系数据库中的 SELECT 语句。语法如下:
result = FOREACH data GENERATE name, age + 5;
上述示例对每个元组提取 name 字段,并计算 age 字段加上5的值。
3. FILTER:
FILTER 关键字用于过滤元组,只保留满足特定条件的元组。语法如下:
filtered_data = FILTER data BY age > 18;
上述示例过滤了年龄大于18的数据。
4. GROUP BY:
GROUP 关键字用于将数据分组,通常与聚合函数一起使用。语法如下:
grouped_data = GROUP data BY gender;
上述示例按照性别将数据分组。
5. JOIN:
JOIN 关键字用于合并两个或多个关系数据集。语法如下:
joined_data = JOIN data1 BY id, data2 BY id;
上述示例按照相同的 id 字段将两个数据集合并。
6. STORE:
STORE 关键字用于将结果存储到指定位置,可以是HDFS、本地文件系统等。语法如下:
STORE result INTO 'output';
上述示例将结果存储到名为 'output' 的位置。
7. DESCRIBE:
DESCRIBE 关键字用于查看关系的结构和字段信息。语法如下:
DESCRIBE data;
8. DUMP:
DUMP 关键字用于查看关系中的数据。语法如下:
DUMP data;
示例:
以下是一个简单的Pig Latin脚本示例,用于计算一个文本文件中各单词的出现频率:
-- 载入数据
lines = LOAD 'input.txt' AS (line:chararray);
-- 切分单词
words = FOREACH lines GENERATE FLATTEN(TOKENIZE(line)) AS word;
-- 分组并计数
word_count = GROUP words BY word;
result = FOREACH word_count GENERATE group AS word, COUNT(words) AS count;
-- 存储结果
STORE result INTO 'output';
上述脚本包括了载入数据、切分单词、分组计数以及存储结果等步骤。Pig会将这个高层次的脚本转换成底层的MapReduce作业,并在Hadoop集群上执行。
转载请注明出处:http://www.pingtaimeng.com/article/detail/11085/Apache Pig