Milyonlarca kayıt eklemenin en etkili yolu, Spark veri çerçevesinden Postgres Tablolarına 50 milyon demek. Ben geçmişte de MSSQL kıvılcımdan çok başarılı olan toplu kopya ve toplu boyut seçeneğini kullanarak yaptım .
Postgres için burada bulunabilecek benzer bir şey var mı?
Ben denedim kodu ve süreci çalıştırmak için gereken zaman ekleme:
def inserter():
start = timer()
sql_res.write.format("jdbc").option("numPartitions","5").option("batchsize","200000")\
.option("url", "jdbc:postgresql://xyz.com:5435/abc_db") \
.option("dbtable", "public.full_load").option("user", "root").option("password", "password").save()
end = timer()
print(timedelta(seconds=end-start))
inserter()
Bu yüzden 10 milyon kayıt için yukarıdaki yaklaşımı yaptım ve belirtildiği gibi 5 paralel bağlantıya numPartitions
sahiptim ve aynı zamanda 200k'luk parti boyutunu denedim .
İşlem için geçen toplam süre 0: 14: 05.760926 (on dört dakika ve beş saniye) idi.
Zamanı azaltacak başka etkili bir yaklaşım var mı?
Kullanabileceğim verimli veya optimum parti boyutu ne olabilir? Parti boyutumu artırmak işi daha hızlı yapar mı? Veya birden fazla bağlantı açmak, örneğin> 5, işlemi daha hızlı yapmama yardımcı olur mu?
Üzerinde 10 milyon kayıtları için ortalama 14 dakika kötü değil , ama orada insanlar arıyor yardım cevaba önce bu soruyu bu yapardı kim.