最近连续2次发烧+工作比较忙导致好久没更新。今天更一发战5渣。
背景简介
用存储过程分分钟能搞定的事情,老总非要用hadoop跑,曰:hadoop是我们的核心竞争力。用hadoop的话算上导数据的时间,估计用时怎么也要6个小时左右。但这不是重点。重点是用pig计算出来的结果和存储过程跑出来的不一致,于是苦逼的排错之旅开始了。
第一个bug
第一个bug叫做“人祸”。队友发来的数据库表的文档居然漏掉了一个字段,于是这个字段后面的列全部对应错了。而我用pig又喜欢用
1 2 |
--2014-11-19 写这段代码的时候只有我和上帝知道它在干嘛 --2014-12-19 现在只有上帝知道了 |
好了不开玩笑了。虽然这个问题很没有技术含量,但教会了我这么一个真理:永远不要相信其它人,若确实需要相信其它人请选择性的相信那些靠谱的人!
第二个bug
第一个bug完全体现不出我是战5渣这么一个事实,那么第二个bug就能很好的诠释什么叫战5渣。
1 |
Y = FOREACH X GENERATE ($1 IS NULL?0:$1); |
1 |
Y = FOREACH X GENERATE $1; |
上面这两句话的区别很明显吧,一个判断了第二个参数是否为空,若为空则输出0,否则正常输出;另一个则什么都不做直接输出。但是亲爱的pig显然不是这么做的:若$1的值是类似
好了,那如何才能正常的判断是否为空且输出double类型的数字呢?如下所示:
1 |
Y = FOREACH X GENERATE ($1 IS NULL?0:(double)$1); |
(老总:这就是你号称的灵异事件?我:请不要在意这些细节...)
至于为何double类型的数据为何会变成奇怪的样子,其实是因为我们导数据用的是淘X家的Datax。为啥不用Sqoop?我怎么知道,这也不是我能决定的啊。
这踹垃圾桶的人好像你
哥要苗条很多好吧。。
这垃圾筒好像你。。。。
友尽。。
That's a smart way of thknniig about it.
Well maiacamda nuts, how about that.
Én is csak idÃs©Ã¶ltÃt‘kÅ©nt csinálom, mert szeretem… nem pedig pénzért, ugyanis én általában megveszem, vagy kölcsönzöm az eredetit, tehát költök rá és nem keresek rajta. Darabolom is és minden szabályt betartok, de mivel sokszor kerül fel fizetÅ‘s oldalra, és predb is eléggé kéz kezet mos alapon működik (kit szeretnek, kit nem), Ãgy gondolkodom, hogy csakis p2p oldalakra való munkákkal kéne foglalkoznom, ott legalább kapok egy köszönömöt