У меня есть кластер на AWS с двумя подчиненными и 1 ведущим. Все экземпляры имеют тип m1.large. Я использую искру версии 1.4. Я сравниваю производительность искры с данными размером 4 м, поступающими с красного смены. Я произвел один запрос через оболочку pyspark
df = sqlContext.load(source="jdbc", url="connection_string", dbtable="table_name", user='user', password="pass")
df.registerTempTable('test')
d=sqlContext.sql("""
select user_id from (
select -- (i1)
sum(total),
user_id
from
(select --(i2)
avg(total) as total,
user_id
from
test
group by
order_id,
user_id) as a
group by
user_id
having sum(total) > 0
) as b
"""
)
Когда я делаю d.count(), указанный выше запрос занимает 30 секунд, когда df
не кэшируется и 17 секунд, когда df
кэшируется в памяти.
Я ожидаю, что эти тайминги будут ближе к 1-2 м.
Это мои конфигурации искры:
spark.executor.memory 6154m
spark.driver.memory 3g
spark.shuffle.spill false
spark.default.parallelism 8
rest установлен в значения по умолчанию. Может ли кто-нибудь увидеть, чего я здесь не вижу?