gpt4 book ai didi

apache-spark - Spark 节省大量时间

转载 作者:行者123 更新时间:2023-12-02 12:25:32 24 4
gpt4 key购买 nike

我有 2 个数据帧,我想查找除 2 (surrogate_key,current) 之外所有列都相等的记录

然后我想用新的 surrogate_key 值保存这些记录。

以下是我的代码:

val seq = csvDataFrame.columns.toSeq
var exceptDF = csvDataFrame.except(csvDataFrame.as('a).join(table.as('b),seq).drop("surrogate_key","current"))
exceptDF.show()

exceptDF = exceptDF.withColumn("surrogate_key", makeSurrogate(csvDataFrame("name"), lit("ecc")))
exceptDF = exceptDF.withColumn("current", lit("Y"))

exceptDF.show()

exceptDF.write.option("driver","org.postgresql.Driver").mode(SaveMode.Append).jdbc(postgreSQLProp.getProperty("url"), tableName, postgreSQLProp)

这段代码给出了正确的结果,但是在将这些结果写入 postgre 时遇到了困难。

不知道出了什么问题。还有什么更好的方法吗?

问候,索拉布

最佳答案

默认情况下,spark-sql 创建 200 个分区,这意味着当您尝试保存 datafrmae 时,它​​将保存在 200 个 parquet 文件中。您可以使用以下技术减少 Dataframe 的分区数量。

  1. 在应用程序级别。设置参数“spark.sql.shuffle.partitions”如下:

sqlContext.setConf("spark.sql.shuffle.partitions", "10")

  • 减少特定 DataFrame 的分区数量,如下所示:
  • df.coalesce(10).write.save(...)

    关于apache-spark - Spark 节省大量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45479083/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com