与蜂巢比较时,火花sql读取表非常慢

时间:2019-03-05 09:30:00

标签: apache-spark hive apache-spark-sql

当我通过spark sql读取时,我有一个大约有2500列的配置单元表:

val df = spark.sql("select * from dbName.tableName")

完成读取hive表大约需要3个小时,而我使用hive sql读取此表时,它仅占用我大约几秒钟的时间。

谁知道为什么spark sql和hive sql之间的性能如此不同?非常感谢!

1 个答案:

答案 0 :(得分:1)

假设您使用的是Hive而不是Impala:Hive QL查询从表中选择* 甚至不是仅Map作业,而是创建了一个边缘情况,即“获取任务”,而不是MR任务,它仅按原样转储数据,而无需对其执行任何操作。我似乎还记得以前刚开始的​​时候也注意到这一点。即边缘情况,它不需要计数,求和,过滤器等,就可以这样。

另一方面,

val df ...正在构建数据帧,需要通过改组,资源分配(通过YARN)等完成数据帧。由于您未声明,我们对环境一无所知,如果有Spark Standalone或YARN,则已制定调度策略。

在任何情况下,即使使用MR进行选择,返回上面的第一行也相对较快,我怀疑这与宽列无关,除了需要更多的工作之外,但对您提出问题的方式。