Tez VS Spark - 巨大的性能差异

Tez VS Spark - huge performance diffs

我正在使用 HDP 2.6.4,我发现 Spark SQL 与 TeZ 上的 Hive 存在巨大差异。这是对约 95 M 行

的 table 的简单查询
SELECT DT, Sum(1) from mydata GROUP BY DT

DT是分区列,是一个标记日期的字符串。

在 spark shell 中,有 15 个执行程序,驱动程序内存 10G,执行程序内存 15G,查询运行 10-15 秒。

当 运行 在 Hive 上(来自 beeline)时,查询运行(实际上仍然是 运行)500+ 秒。 (!!!) 更糟糕的是,这个应用程序占用的资源(显着)比我 运行 作业中的 spark shell 会话更多。

更新:已完成 1 row selected (672.152 seconds)

有关环境的更多信息:

更多更新:

检查此 link 上的矢量化时,我注意到我在使用 explain 时在任何地方都看不到 矢量化执行:true。引起我注意的另一件事是:table:{"input format:":"org.apache.hadoop.mapred.TextInputFormat","output format:":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat","serde:":"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"}

即检查 table 本身时:STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'

spark 和 tez 之间的任何比较通常得出相对相同的术语,但我看到了巨大的差异。

首先要检查什么?

感谢

最后还是放弃了,安装了LLAP。我将接受它作为答案,因为我有某种强迫症,这个悬而未决的问题已经让我眼前一亮。