【问题标题】:How to read and write two DataFrames in parallel with Apache Spark如何使用 Apache Spark 并行读写两个 DataFrame
【发布时间】:2020-05-21 12:25:18
【问题描述】:

我正在从 JDBC 数据源创建两个 DataFrame,然后将它们都写入 S3 存储桶。写入 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】:

启用粘合作业的并发执行,然后在单个作业中运行该作业两次,由于 spark 是分布式处理,因此无法并行保存数据帧。

【讨论】:

    猜你喜欢
    • 2018-12-03
    • 2019-04-20
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2017-08-02
    • 2017-04-03
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多