用例:使用Pig查找出现次数最多的起始字母。
解:
情况1:将数据加载到名为“ lines”的包中。整行粘贴到字符数组类型的元素行。
grunt>
lines= LOAD "/user/Desktop/data.txt" AS (line: chararray);
情况2:袋行中的文本需要标记, 这样每行产生一个单词。
grunt>
tokens = FOREACH lines GENERATE flatten(TOKENIZE(line))As token: chararray;
情况3:要保留每个单词的第一个字母, 请输入以下命令。该命令使用子字符串方法获取第一个字符。
grunt>
letters = FOREACH tokensGENERATE SUBSTRING(0, 1)as letter : chararray;
情况4:为唯一角色创建一个包, 其中分组的包将在每次出现该字符时都包含相同的字符。
grunt>
lettergrp = GROUP letters by letter;
情况5:每组计算发生次数。
grunt>
countletter= FOREACHlettergrpGENERATE group, COUNT(letters);
情况6:使用以下命令按计数从高到低的顺序排列输出。
grunt>
OrderCnt = ORDER countletterBY$1DESC;
情况7:将结果限制为1。
grunt>
result=LIMITOrderCnt1;
【Apache Pig的例子】情况8:将结果存储在HDFS中。结果保存在sonoo文件夹下的输出目录中。
grunt>
STOREresultinto 'home/sonoo/output';
推荐阅读
- Android内存泄露之开篇
- Apache Pig数据类型
- Apache Pig教程
- 在Hive中进行分区
- MapReduce字数示例
- MapReduce字符计数示例
- MapReduce API介绍和用法
- MapReduce教程介绍
- HiveQL-ORDER BY和SORT BY子句