一骑绝尘引发的思考–关于hive程序员是否需要学习mapreduce

标题是一篇文章,为新华社记者杨明所写,文中讨论了中国在亚运会团购金牌的事,认为泱泱中华不应该再以金牌论英雄,而需将竞技体育转移到全民运动中来,让全社会都来热爱体育,热爱运动。
引用此文,不是在此讨论体育,而是因为前些天巴真同学的拍砖引起了我的一些想法!为什么会有这么多想法?因为本人活到现在还没有人在我的文章后留言如此之长,为表敬重,单独再开一贴。
其实我们所要争论的核心议题很明确,就是hive程序员是否应该了解mapreduce!对于巴真的板砖,我有一点不同的想法:
其一,hive和mapreduce的关系其实没有C语言和编译语言,JAVA和汇编程序这么深。就我认为,hive和pig等语言类似,只是一个shell,一个包装了mapreduce的shell,他使得编写m/r程序更加的方便入手,使得步入云计算的程序员门槛更低。但是,就像编写C语言你依然需要去了解指针,学习JAVA你也肯定会去研究GC一样,为了编写精美和高效率的代码,一个程序员应该去了解你的SQL是如何转为m/r的。
其二,工业由利润推动,我很赞同这句话。这就像hive的诞生一样,推动着云计算的使用人群从篮球框变大到了足球门!但是就像摘掉了“东亚病夫”帽子的中国再也不能唯金牌论一样,公司发展到了一定程度也就不能唯利润论了。经过了刀耕火种的资本原始积累之后,接下来就应该保住利润,降低成本。正所谓创业容易守业难,我们需要降低成本,就需要更深入的设计,更深入的发展。学习mapreduce可以帮助我们更好的理解hive的运行过程,以至于写出更好的代码,开源节流。
其三,要说点实际情况。在hive的优化过程中,曾经碰到过两表join时候OOM的情况。解决问题一句话:”小表放前,大表放后”!其背后的本意是:“对于同一个key来说,对应的value值小的放前,大的放后”,如果没有接触过m/r,单一的SQL程序员是很难理解这句话的意思的。
给你一份简谱,你可以“弹”出一首很美的歌曲,但如果你想“创作出”优美的旋律,你就必须懂得五线谱;中国可以团购金牌,但要成为体育强国,必须要深层次的发展体育;hive可以很快很好的带来效益(这就好像临时需求),但是要持续不断的稳定产出(这就类似上线代码),则需要理解m/r的原理。
以上愚见,仅供参考。
原文地址:https://www.cnblogs.com/robbychan/p/3786640.html