使用Pig清洗数据

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

内容简介: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/


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

查看所有标签

猜你喜欢:

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

The Master Switch

The Master Switch

Tim Wu / Knopf / 2010-11-2 / USD 27.95

In this age of an open Internet, it is easy to forget that every American information industry, beginning with the telephone, has eventually been taken captive by some ruthless monopoly or cartel. Wit......一起来看看 《The Master Switch》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具