性能:PigvsHive

hsvhsicv  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(336)

我发现pig和hive之间存在一些(显著的)性能差异(在实时运行时间和cpu时间方面),我正在寻找解决这些差异的方法。我使用了这两种语言的explain特性(即hive:explain关键字,pig:pig-e'explain-script explain.pig')来对比和比较生成的语法树、逻辑、物理和map reduce计划。然而,两者似乎做同样的事情。然而,job tracker显示了map和reduce任务启动数量的差异(因此我确保两者使用相同数量的map和reduce任务,并且性能差异仍然存在)。因此,我的问题是:我还可以用什么方法分析正在发生的事情(可能是在较低的级别/字节码级别)?
编辑:我正在由tpc运行tpc-h基准测试(可用)https://issues.apache.org/jira/browse/pig-2397 以及https://issues.apache.org/jira/browse/hive-600 ). 然而,即使是更简单的脚本也显示出相当大的性能差异。例如:

SELECT (dataset.age * dataset.gpa + 3) AS F1,
  (dataset.age/dataset.gpa - 1.5) AS F2 
  FROM  dataset
  WHERE dataset.gpa > 0;

我仍然需要全面评估tpc-h基准测试(稍后将更新),但是更简单脚本的结果在本文档中有详细说明:https://www.dropbox.com/s/16u3kx852nu6waw/output.pdf
(简体中文:http://i.imgur.com/1j1rcws.jpg )

dluptydi

dluptydi1#

我以前读过一些Pig和Hive的源代码。我可以分享一些意见。
由于我关注的是连接实现,这里我可以提供pig和hive的连接实现的一些细节。hive的连接实现比pig效率低。我不知道为什么hive需要在join实现中创建这么多对象(这样的操作非常慢,应该避免)。我想这就是为什么Hive比Pig加入得慢。如果您对此感兴趣,可以自己检查commonjoinoperator代码。所以我猜Pig通常更有效,因为它的高质量代码。

相关问题