Spark bucketing读取性能

时间:2018-01-18 19:12:00

标签: apache-spark spark-dataframe apache-spark-dataset apache-spark-2.2

Spark版本 - 2.2.1。

我创建了一个包含64个桶的分区表,我正在执行聚合函数select t1.ifa,count(*) from $tblName t1 where t1.date_ = '2018-01-01' group by ifa。我可以看到Spark UI中的64个任务,它们只使用了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

1 个答案:

答案 0 :(得分:1)

使用bucketing,任务数量==桶数,因此您应该了解需要/想要使用的核心/任务的数量,然后将其设置为桶数。