我正在做一批負載,使用JDBC驅動程序從數據庫表。我注意到在Sparkui,石油泄漏兩種內存和磁盤,但隻能在一個執行人。我也注意到,當試圖使用JDBC平行閱讀,它似乎運行慢,然後離開違約。
一些細節:
- 我有4個工人,8 GB
- 源表大約是8000萬行
- 我用一個“dateloaded”分區列。
- sqlContext.setConf (“spark.sql.shuffle.partitions”、“4”),設置調整分區大小。是否正確設置洗牌執行人計數?
- numPartitions = 12,它正確的理想是每3 - 4任務執行者?
“dateloaded”不是一個主鍵,但指數。泄漏數據傾斜的結果嗎?或者我太少/許多分區洗牌或讀嗎?