我在S3存储桶中有多个具有相同架构的数据框,需要将它们合并到一个final_df
模式就像:
id | dates | feature1_value
0 2017-01-01 5.0
我需要将这些df加入这样的最终数据帧中:
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时非常低。