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 № 1Com 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.