程序员的自我修养
Home » 分类目录 » Apache Pig

战5渣系列——奇怪的Pig特性

8条评论12,450次浏览

最近连续2次发烧+工作比较忙导致好久没更新。今天更一发战5渣。

先感受下战5渣的境界:
only5

背景简介

用存储过程分分钟能搞定的事情,老总非要用hadoop跑,曰:hadoop是我们的核心竞争力。用hadoop的话算上导数据的时间,估计用时怎么也要6个小时左右。但这不是重点。重点是用pig计算出来的结果和存储过程跑出来的不一致,于是苦逼的排错之旅开始了。

第一个bug

第一个bug叫做“人祸”。队友发来的数据库表的文档居然漏掉了一个字段,于是这个字段后面的列全部对应错了。而我用pig又喜欢用X = FOREACH B1 GENERATE $4,$5,$16,$21,$45,$77,$81,$92,$47;这样的风格,并且加上如下注释:

好了不开玩笑了。虽然这个问题很没有技术含量,但教会了我这么一个真理:永远不要相信其它人,若确实需要相信其它人请选择性的相信那些靠谱的人!

第二个bug

第一个bug完全体现不出我是战5渣这么一个事实,那么第二个bug就能很好的诠释什么叫战5渣。

(更多…)

分类:Apache Pig, 战5渣
标签:,

关于Apache Pig

0条评论4,898次浏览

网上关于介绍pig、安装Pig以及pig原理的文章够多了。以下记录一些入门时遇到的一些问题,算是一些实战经验吧。

关于脏数据过滤

Pig除了用FILTER进行按条件过滤数据以外,还有一种脏数据无法处理。如,我的数据共29个字段,以“,”分隔。现在有一部分的数据,缺失了部分字段,导致以“,”分隔后,数组长度小于29。因为不知道到底缺失的是哪个字段,这样的数据已经毫无意义。在Pig中如何过滤掉呢?翻遍了Pig的Document,去各种社区提问也没人能回答。最后尽然在FAQ中看到了答案,可以用ARTIY(*)来进行过滤。如:

关于PigStorage

PigStorage可以自定义分隔符,如PigStorage(','),PigStorage('|')。但上次遇到一个奇葩的csv文件,里面的所有数据全部加上的引号,导致数据大小直接变大了1倍不说,而且以','分隔后的数据全部是"1352288xxxx"这样带着引号无法转换为chararray以外类型的数据。数据样例:

"1","2","3","4"

后来想尝试使用'\",\"'来进行分隔,然后对第一个和最后一个字段进行SUBSTRING处理,结果却报错了。具体错误没保存下来,意思好像是PigStorage只能以char为分隔符。

无奈,只能用shell命令替换掉所有的引号再进行下一步处理。

遇到这样的文件,除了祈祷文件不要太大以外,最好的处理方式是给数据发送方上一课。you see see your po data!!!

阅读全文>>

分类:Apache Pig
标签:
11
profile
  • 文章总数:81篇
  • 评论总数:241条
  • 分类总数:32个
  • 标签总数:45个
  • 运行时间:1253天

大家好,欢迎来到selfup.cn。

这不是一个只谈技术的博客,这里记录我成长的点点滴滴,coding、riding and everthing!

最新评论
  • Anonymous: :?: :razz: :sad:
  • Anonymous: 牛
  • Anonymous: 楼主你好,我偶尔也会 遇到Reconnect due to socket error: java.nio.channels.ClosedCha...
  • Anonymous: sdfs
  • Anonymous: :arrow: :neutral: :cry:
  • Anonymous: java.io.NotSerializableExcepti on: DStream checkpointing has been enabled but the DStreams with their...
  • wick: HI,请问一下,U,S,V得到 ,怎么得到近似矩阵 (用spark java),谢谢。
  • Michael Whitaker: Thank you for this blog, it was very helpful in troubleshooting my own issues. It seems that no...
  • Anonymous: :mad:
  • Anonymous: :???:
  • Anonymous: :mad: :mad: :mad:
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • Anonymous: :razz: :evil: :grin:
  • 张瑞昌: 有很多,比较常见的是 Jacob迭代法,一次迭代O (n^3),迭代次数不清楚 ...
  • Anonymous: :mrgreen:
  • lc277: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: :smile: :grin: :eek:
  • 李雪璇: 想要完整代码,可以帮 忙发给我吗