我有一个大约2500列的蜂巢表,当我通过spark sql读取它时,如下所示:
val df = spark.sql(“select * from dbName.tableName”)完成阅读蜂巢表需要大约3个小时,…
假设您使用的是Hive而不是Impala:Hive QL查询 的 从表中选择* 强> 甚至不是Map唯一的工作,但是边缘情况,即“获取任务”被创建而不是MR任务,它只是按原样转储数据而不对其做任何事情。我似乎记得在我刚开始的时候注意到过去。即边缘情况,它不需要计数,求和,过滤等,并且可以这样做。
的 val df 强> ...另一方面,正在建立一个数据帧,它需要通过改组,资源分配(通过YARN)等来完成。我们对环境一无所知,因为你没有声明,如果Spark Standalone或YARN,调度策略就到位了。
在任何情况下,选择即使使用MR也可以相对快速地返回上面的第一组行,我怀疑它与宽列几乎没有关系,除了当然更多的工作,但是对你的姿势的推力有点不同这个问题。