使用Pig清洗数据

栏目: 编程工具 · 发布时间: 6年前

内容简介:Pig是个不错的数据流语言,可以用于数据处理中的一些场景,比如日志分析。在这里,我们假设有如下的数据:现在,我们想提取其中年龄大于20岁且小于30岁的人的记录,然后按照年龄升序进行存储。

Pig是个不错的数据流语言,可以用于数据处理中的一些场景,比如日志分析。

在这里,我们假设有如下的数据:

num,name,age  
1,zhangsan,20  
2,lisi,30  
3,wangwu,25

现在,我们想提取其中年龄大于20岁且小于30岁的人的记录,然后按照年龄升序进行存储。

对于这个简单的需求,我们可以使用Pig的本地模式进行操作:

pig -x local

进入了grunt交互模式下,我们进行如下的操作:

grunt> patent = load 'patent.csv' using PigStorage(',') as (num,name,age);  
grunt> users = filter patent by age >= 20 and age <= 30;  
grunt> person = order users by age asc;  
grunt> store person into 'user' using PigStorage(',');

这个过程简单的说,类似如下的操作:

  • 使用load函数加载文件,然后使用逗号进行分割,之后得到对应的字段。对于字段,我们可以设置其转换的类型,当然如果不进行设置的话,就是默认的bytearray。
  • 我们调用filter对patent按照age进行过滤
  • 使用order对users结果集按照age进行升序排序
  • 使用store将person结果集保存在user目录下

这个过程,可以说是很简单和符合非编程操作人员的操作。在这个过程中,我们可以通过 dump person 在终端上打印其输出信息。

如果对应的目录存在,可以删除后再进行存储:

grunt> fs -rm -r -f user;

如果本地测试没有问题,那么我们将其编写在1个后缀为 .pig 的脚本中,其内容如下:

patent = load 'patent.csv' using PigStorage(',') as (num,name,age);  
users = filter patent by age > 20 and age <= 30;  
person = order users by age asc;  
store person into 'user' using PigStorage(',');

然后我们执行如下的命令进行运行:

dog@debian:~$ pig -f patent.pig

如果要进行语法的检验,可以使用 -c 选项:

dog@debian:~$ pig -c patent.pig

这样就是1个简单的Pig的处理过程。

参考文章:

https://www.ibm.com/developerworks/cn/linux/l-apachepigdataquery/


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

游戏之旅

游戏之旅

云风 / 电子工业出版社 / 2005-12-01 / 46.00

这是一本非常有特色的计算机编程学习书籍。其特色就在于它将作者十余年来对游戏编程的所思、所感、所悟与编程理论知识相结合,褪去了纯理论的教学理念,使读者在前人的学习过程中吸取学习经验和教训,将计算机基础知识和高级编程技术不知不觉地融入自己的头脑中。 本书忠实地记录了作者十余年来对游戏编程的所思、所感、所悟。全书按照作者本人学习和实践的过程,带着读者从基础的计算机知识到高级的编程技......一起来看看 《游戏之旅》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器