Spark 版本 - 2.2.1。
我创建了一个包含 64 个存储桶的存储表,我正在执行聚合函数 select t1.ifa,count(*) from $tblName t1 where t1.date_ = '2018-01-01' group by ifa
。我可以看到 Spark UI 中的 64 个任务,仅使用 20 个执行程序中的 4 个执行程序(每个执行程序有 16 个核心)。有没有办法可以扩展任务数量,或者这就是分桶查询应该运行的方式(正在运行的核心数量)作为桶的数量)?
这是创建表:
sql("""CREATE TABLE level_1 (
bundle string,
date_ date,
hour SMALLINT)
USING ORC
PARTITIONED BY (date_ , hour )
CLUSTERED BY (ifa)
SORTED BY (ifa)
INTO 64 BUCKETS
LOCATION 'XXX'""")
这是查询:
sql(s"select t1.ifa,count(*) from $tblName t1 where t1.date_ = '2018-01-01' group by ifa").show
最佳答案
使用存储桶时,任务数量 == 存储桶数量,因此您应该了解您需要/想要使用的核心/任务数量,然后将其设置为存储桶数量。
关于apache-spark - Spark分桶读取性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48328709/