эффективно объединить несколько фреймов данных в Pyspark - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть несколько фреймов данных одной и той же схемы в корзине 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...