Учитывая приложение, преобразующее csv в паркет (из и в S3) с небольшим преобразованием:
for table in tables:
df_table = spark.read.format('csv') \
.option("header", "true") \
.option("escape", "\"") \
.load(path)
df_one_seven_thirty_days = df_table \
.filter(
(df_table['date'] == fn.to_date(fn.lit(one_day))) \
| (df_table['date'] == fn.to_date(fn.lit(seven_days))) \
| (df_table['date'] == fn.to_date(fn.lit(thirty_days)))
)
for i in df_one_seven_thirty_days.schema.names:
df_one_seven_thirty_days = df_one_seven_thirty_days.withColumnRenamed(i, colrename(i).lower())
df_one_seven_thirty_days.createOrReplaceTempView(table)
df_sql = spark.sql("SELECT * FROM "+table)
df_sql.write \
.mode("overwrite").format('parquet') \
.partitionBy("customer_id", "date") \
.option("path", path) \
.saveAsTable(adwords_table)
Я столкнулся с трудностью с искровым ЭМИ.
На локальном с искрой представить, это без проблем работает (140 МБ данных) и довольно быстро. Но в EMR это другая история.
первый «adwords_table» будет конвертирован без проблем, но второй остается бездействующим.
Я прошел пользовательский интерфейс заданий зажигания, предоставленный EMR, иЯ заметил, что после выполнения этой задачи:
Список листовых файлов и каталогов для 187 путей:
Spark убивает всех исполнителей:
и через 20 минут больше ничего не происходит. Все задания находятся в состоянии «Выполнено» и новые не запускаются. Я жду запуска saveAsTable.
Моя локальная машина имеет 8 ядер 15 ГБ, а кластер состоит из 10 узлов. R3.4xlarge: 32 vCore, 122 ГиБ памяти, 320 SSD ГБ, хранилище EBS. Хранение: 200GiB
В конфигурации используется maximizeResourceAllocation
true, и я только изменил --num-executors / --executor-cores на 5
Кто-нибудь знает, почему кластер входит в "холостые "и не заканчивает задачу? (это в конечном итоге завершится сбоем без ошибок через 3 часа)
РЕДАКТИРОВАТЬ: Я добился небольшого прогресса, удалив все соединения каталога клея + понизив значение hadoop для использования: hadoop-aws: 2.7.3
Теперь saveAsTable работает нормально, но как только он завершается, я вижу, что исполнители удаляются, а кластер не работает, шаг не заканчивается.
Таким образом, моя проблема остается той же.