取消
顯示的結果
而不是尋找
你的意思是:

增量加載SQL Server表

erigaud
貢獻者

我在訪問一個前提SQL Server表。表相對較小(000行),我使用訪問它

spark.read。jdbc (url = jdbcUrl表=查詢)
每天都有新的記錄prem表,我想添加在我的表在lakehouse青銅。然而沒有“InsertedOn”列或任何東西,也沒有明顯的鑰匙我可以使用合並的數據銅表。所以目前我每天覆蓋所有數據,這似乎不是個好方法。
有一個更好的方法來逐步加載數據從SQL server ?也許一些使用流結構?
謝謝你!
2回答2

匿名
不適用

如果沒有明確的“InsertedOn”列或其他明顯的密鑰用於增量加載,你仍然可以從本地SQL Server表實現增量加載的青銅表lakehouse用火花和一些額外的邏輯。雖然流可能沒有必要在這種情況下,你仍然可以使用火花的能力來管理有效負載增量。這裏有一個建議的方法:

  1. 銅表加載到一個DataFrame:在執行增量加載之前,現有的數據從您的青銅表加載到DataFrame。

    bronze_df = spark.read.format(“δ”).load (“path_to_bronze_table”)

    2。整個源表從SQL服務器加載到另一個DataFrame:

    source_df = spark.read。jdbc (url = jdbcUrl表=查詢)
    3所示。確定新記錄:使用DataFrame操作exceptAll或源DataFrame anti-join識別新記錄相比,現有的銅表中的數據。
    從pyspark。sql導入函數F

    #如果有一個惟一的標識符列id,您可以使用它進行比較
    new_records_df = source_df。加入(bronze_df“id”,“left_anti”)
    4所示。銅表添加新記錄:一旦你有了DataFrame包含新記錄,你可以將它添加到青銅表。
    new_records_df.write.format .mode(“δ”)(“追加”).save (“path_to_bronze_table”

erigaud
貢獻者

就像我說的,沒有表中惟一標識符,允許我做任何形式的青銅源表和表之間的連接。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map