就目前的情况来看,这个问题并不适合我们的问答形式。我们希望答案能得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或广泛讨论。如果您觉得这个问题可以改进,并可能重新打开,请访问帮助中心寻求指导。8年前关门了。据我所知,我们可以用pig来实现mapreduce,也可以用java来实现。你能告诉我在什么情况下使用哪一种吗?
klr1opcd1#
如果你能在Pig(或 hive )里做,就在Pig(或 hive )里做。否则,请在JavaMapReduce中执行。Pig的好处:像csv这样的结构化数据非常容易加载和使用比java慢不了多少不容易出现java级错误更容易阅读和书写无需编译:易于维护,易于部署有一些事情一开始你可能认为你不能用pig来做,但你想用java来做,但是一旦你对pig有了更多的了解,你就可以用pig来做了:您可以用java编写用户定义的加载程序。无论如何,您都要编写一些java来解析复杂的数据格式,所以为什么不在pig加载程序中进行呢?筑巢 map 以及 bag 数据类型可以很好地建模分层数据结构,但是您可能需要编写大量的udf。您可以在pig中使用javamapreduce。这让你可以在pig中完成艰难的操作,但在其他地方更容易。这里有一些,但你明白了。pig是非常可定制的,一般来说,您编写的java会更少。基本的东西很简单。我们可以做一些事情,比如分层数据结构,和定制加载。好吧,剩下什么?使用分区器来做mapreduce不打算做的事情。非常糟糕的数据格式或完全非结构化的数据(视频、音频、原始的人类可读文本)在distributedcache中执行复杂操作(基本操作可以通过 JOIN 以及 USING 'replicated' )希望其他人能在评论中添加他们在pig中不能做的事情。
map
bag
JOIN
USING 'replicated'
1条答案
按热度按时间klr1opcd1#
如果你能在Pig(或 hive )里做,就在Pig(或 hive )里做。
否则,请在JavaMapReduce中执行。
Pig的好处:
像csv这样的结构化数据非常容易加载和使用
比java慢不了多少
不容易出现java级错误
更容易阅读和书写
无需编译:易于维护,易于部署
有一些事情一开始你可能认为你不能用pig来做,但你想用java来做,但是一旦你对pig有了更多的了解,你就可以用pig来做了:
您可以用java编写用户定义的加载程序。无论如何,您都要编写一些java来解析复杂的数据格式,所以为什么不在pig加载程序中进行呢?
筑巢
map
以及bag
数据类型可以很好地建模分层数据结构,但是您可能需要编写大量的udf。您可以在pig中使用javamapreduce。这让你可以在pig中完成艰难的操作,但在其他地方更容易。
这里有一些,但你明白了。pig是非常可定制的,一般来说,您编写的java会更少。
基本的东西很简单。我们可以做一些事情,比如分层数据结构,和定制加载。好吧,剩下什么?
使用分区器来做mapreduce不打算做的事情。
非常糟糕的数据格式或完全非结构化的数据(视频、音频、原始的人类可读文本)
在distributedcache中执行复杂操作(基本操作可以通过
JOIN
以及USING 'replicated'
)希望其他人能在评论中添加他们在pig中不能做的事情。