我目前有一個應用程序應該連接到不同類型的數據庫,使用Spark的JDBC選項在該數據庫上運行特定查詢,然後將生成的DataFrame寫入HDFS。對於Oracle來說,性能非常糟糕(沒有檢查所有這些)。原來,這是因爲Oracle的默認10行爲fetchSize
屬性。所以我把它增加到1000,性能增益很明顯。然後,我將它改爲10000,但隨後一些表開始因執行器(6個執行器,每個4G內存,2G驅動器內存)中的內存不足而失敗。Spark JDBC fetchsize選項
我的問題是:
是火花的JDBC獲取的數據執行內存堅持每次運行?有沒有辦法un-persist它在作業運行?
我在哪裏可以獲得有關
fetchSize
屬性的更多信息?我猜測它不會被所有JDBC驅動程序支持。是否還有其他需要注意的與JDBC相關的事情以避免OOM錯誤?
@ zero323你是什麼意思?只是一個笑話,OP不應該使用JDBC或我有一些錯誤? (你現在,它晚了;)) –
這只是一個笑話:)答案看起來不錯。 – zero323
嘿,好的:D這個來源我不喜歡的一件事是我們必須依賴第三方驅動程序 - 它們的工作方式都不相同。但是誰不使用RDBMS? ;) –