如何用Apache Spark并行读写两个DataFrames?

问题描述 投票:0回答:1

我正在从JDBC数据源创建两个DataFrames,然后将它们都写入S3 bucket。写入S3的文件的时间戳相隔20秒,这告诉我这些操作不是并行执行的。为了测试目的,数据是从同一个数据库表加载的,而且行数相同。我怎样才能使读和写同时并行执行?

python 脚本在 AWS Glue 开发端点上运行,有 2 个 DPU,标准工人类型。

df1 = spark.read.format("jdbc").option("driver", driver).option("url", url).option("user", user).option("password", password).option("dbtable", query1).option("fetchSize", 50000).load()
df2 = spark.read.format("jdbc").option("driver", driver).option("url", url).option("user", user).option("password", password).option("dbtable", query2).option("fetchSize", 50000).load()

df1.write.mode("append").format("csv").option("compression", "gzip").option("timestampFormat", "yyyy.MM.dd HH:mm:ss,SSS").option("maxRecordsPerFile", 1000000).save("s3://bucket-name/test1")
df2.write.mode("append").format("csv").option("compression", "gzip").option("timestampFormat", "yyyy.MM.dd HH:mm:ss,SSS").option("maxRecordsPerFile", 1000000).save("s3://bucket-name/test2") 
apache-spark aws-glue
1个回答
0
投票

启用胶水作业的并发执行,然后运行作业两次,因为在一个单一的工作,它是不可能保存数据帧并行,因为火花是分布式处理。

© www.soinside.com 2019 - 2024. All rights reserved.