【发布时间】:2018-04-04 16:22:24
【问题描述】:
我使用 Spark 2。
实际上我不是执行查询的人,所以我不能包含查询计划。数据科学团队向我提出了这个问题。
我们将 hive 表分区为 2000 个分区并以 parquet 格式存储。当在 spark 中使用这个各自的表时,执行者之间正好有 2000 个任务在执行。但是我们有一个 256 MB 的块大小,我们预计(总大小/256)分区数肯定会远小于 2000。是否有任何内部逻辑火花使用数据的物理结构来创建分区。任何参考/帮助将不胜感激。
更新:情况正好相反。实际上我们的表非常大,比如 3 TB 有 2000 个分区。 3TB/256MB 实际上会达到 11720,但我们的分区数与表的物理分区数完全相同。我只是想了解数据量上的任务是如何生成的。
【问题讨论】:
-
查询内容是什么?您如何阅读蜂巢表?
-
我们正在读取数据,例如 data = spark.sql("select col1,clo2,clo3 from table where conditions") 并使用广播变量对结果集执行连接
标签: apache-spark hive partitioning