У меня есть несколько фреймов данных одной и той же схемы в корзине S3, и мне необходимо объединить их в один final_df
Схема похожа на:
id | dates | feature1_value
0 2017-01-01 5.0
Мне нужно объединить эти dfs в окончательный фрейм данных, подобный этому:
id | dates | feature1_value |feature2_value|.....
Вот код, который я запускаю
for feature in features:
df = spark.read.csv("s3://mybucket/{}/*.csv".format(column),header=True)
df.createOrReplaceTempView('new_data')
final_df.createOrReplaceTempView("final_df")
final_df = spark.sql(
'select f.*, n.{}_value '
'from final_df f '
'inner join new_data n on n.id = f.id and n.dates = f.dates '.format(
column))
Но эти объединения очень дороги, и когда я хочу записать final_df в s3, это всегда заканчивается неудачей.
final_df.write.parquet("s3:my_bucket_1",mode="overwrite")
Как я могу сделать более эффективное объединение и запись в s3?
Когда я проверяю интерфейс кластера,% кластера и% очереди составляют 7,2%, что очень мало при записи в S3.