shi*_*ang 2 hive apache-spark apache-spark-sql
我有一个 Hive 表,大约有 2500 列,当我通过 Spark sql 读取它时,如下所示:
val df = spark.sql("select * from dbName.tableName")
Run Code Online (Sandbox Code Playgroud)
大约需要3个小时才能读完hive表,而我使用hive sql来读取这个表,它只表了我大约几秒钟。
有谁知道为什么spark sql和hive sql的性能差异如此之大?多谢!
假设您使用的是 Hive 而不是 Impala:Hive QL 查询select * from table甚至不是仅 Map 作业,而是一种边缘情况,即创建“获取任务”而不是仅转储数据的 MR 任务是没有做任何事情。我似乎记得在过去当我刚开始的时候也注意到了这一点。即边缘情况,它不需要计数、求和、过滤等,并且可以这样做。
val df ...另一方面正在构建一个数据帧,它需要通过洗牌、资源分配(通过 YARN)等来完成。我们对环境一无所知,因为您没有说明,如果 Spark Standalone 或纱。
无论如何,选择即使使用 MR 也相对较快地返回上述第一组行,我怀疑它与宽列关系不大,当然除了更多的工作,但与你的姿势方式略有不同的推力的问题。
| 归档时间: |
|
| 查看次数: |
2120 次 |
| 最近记录: |