我有2個dataframes,我想找到除2等於所有列(surrogate_key,電流)的記錄火花保存服用大量的時間
然後,我要保存新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卡住。
不知道是什麼問題。還有沒有更好的方法呢?
問候, Sorabh
還顯示()寫入正確postgre打印數據幀,但後來在寫之前需要太多的時間。 –
'show'不會對整個數據執行轉換,只需要顯示多少數據(默認爲20)。在寫入postgres之前,您需要執行緩存+操作,然後您可以測量寫入postgres的實際時間。 「很多時間」是一個非常廣泛的描述,你有多少數據以及它實際上需要多少時間... – eliasah
嗨Eliasah,我用過cache()+ count(),它需要大約1/2小時只有3行10列,延遲也不是由於寫入Postgre。在添加count()之後,它的count()現在需要時間。 –