/ Desempenho de leitura do intervalo de ignição - apache-spark, spark-dataframe, conjunto de dados do apache-spark, apache-spark-2.2

Desempenho de leitura de intervalo de ignição - apache-spark, spark-dataframe, conjunto de dados de faísca do apache, apache-spark-2.2

Versão do Spark - 2.2.1.

Eu criei uma tabela com balde com 64 baldes, estou executando uma função de agregação select t1.ifa,count(*) from $tblName t1 where t1.date_ = "2018-01-01" group by ifa . Eu posso ver que 64 tarefas no Spark UI, queutilize apenas 4 executores (cada executor tem 16 núcleos) de 20. Existe uma maneira de dimensionar o número de tarefas ou de como as consultas com intervalos devem ser executadas (número de núcleos em execução como o número de intervalos)?

Aqui está a tabela de criação:

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"""")

Aqui está a consulta:

sql(s"select t1.ifa,count(*) from $tblName t1 where t1.date_ = "2018-01-01" group by ifa").show

Respostas:

1 para resposta № 1

Com o intervalo, o número de tarefas == número de depósitos, portanto, você deve estar ciente do número de núcleos / tarefas que precisa / deseja usar e, em seguida, defini-lo como o número de depósitos.