(甚至比Pig和Hive之间的差异更基本?为什么两者都有?)
我有一个数据处理管道,通过Hadoop 编写了几个Java map-reduce任务(我自己的自定义代码,源自Hadoop的Mapper和Reducer).它是一系列基本操作,如join,inverse,sort和group by.我的代码涉及并且不是很通用.
继续这种公认的开发密集型方法与使用多个UDF将所有内容迁移到Pig/Hive有什么优缺点?哪些工作不能执行?我会遭受性能下降(使用100s TB)吗?在维护时,我是否会失去调整和调试代码的能力?我可以将部分作业作为Java map-reduce进行管道化,并将其输入输出与Pig/Hive作业一起使用吗?
参考Twitter:通常情况下,Pig脚本占本机地图/减少代码的5%,约占5%的时间.但是,查询通常需要110-150%的时间来执行本机映射/减少作业所需的时间.但是,当然,如果有一个高性能敏感的例程,他们仍然可以直接手动编写本机map/reduce函数.
上面的参考文献还讨论了Pig在MapReduce中开发应用程序的优缺点.
与任何更高级别的语言或抽象一样,Pig/Hive会以牺牲开发人员的工作效率为代价来降低灵活性和性能.