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

JDBC連接器似乎是一個瓶頸,當試圖插入dataframe Azure SQL Server

hfrid
新的因素

這就跟你問聲好!

我插入一個pyspark dataframe Azure sql server,它需要很長時間。數據庫是一個s4但我dataframe 1700萬行和30列插入需要50分鍾。

有一種明顯的速度呢?我打開很多東西——開關連接器,運行scala中的工作而不是等等。我認為dataframe甚至不是大所以必須有一些方法來加快解決。

當dataframe這種規模的,目標表通常是空的。

提前謝謝!

1回複1

匿名
不適用

@Hjalmar Friden:

有幾種方法可以提高數據插入的性能Azure SQL Server使用JDBC連接器:

  1. 增加批量大小:默認情況下,JDBC連接器發送數據的批次1000行。你可以增加這個值提高插入性能。例如,您可以嚐試設置批大小10000行通過添加以下選擇你的JDBC URL: &batchsize = 10000
  2. 使用JDBC平行寫道:JDBC連接器磚支持並行寫入到數據庫中,可以大大加快數據插入的過程。您可以啟用並行寫在您的JDBC URL中設置以下選項:&numPartitions = < num_partitions > < num_partitions >替換為分區的數量你想使用並行寫道。一個好的經驗法則是使用分區的數量等於可用CPU核的數量在你的集群。
  3. 使用不同的JDBC連接器:你可以試著使用不同的JDBC連接器與SQL Azure為性能優化服務器。例如,微軟提供了SQL Server的JDBC驅動程序,您可以下載和使用而不是默認的磚JDBC連接器。
  4. 優化你的數據幀:根據您的數據的結構,您可以優化您的數據幀提高插入性能。一些可能的優化包括:
  • 減少列在你的數據幀的數量隻有那些是必要的。
    • 改變你的列的數據類型為JDBC的更有效,比如使用整數而不是字符串。
    • 合並或進行重新分區的數據幀來減少分區的數量,提高並行性。

5。使用批量插入:如果你將大量數據插入一個空表,考慮使用SQL Server批量插入命令而不是JDBC連接器。可以通過編寫一個CSV文件的數據幀,然後利用批量插入SQL命令將數據加載到SQL Server。這種方法可以使用JDBC速度遠遠超過對大型數據集。

注意,這些優化的一些可能需要修改代碼或數據的結構,所以重要的是要仔細測試每個方法,以確保它適合您的特定的用例。

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

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

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

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

Baidu
map