我目前正在批量加載數據到HBase的從Spark和我主要與以下示例工作:紗殺死執行人的saveAsNewApihadoopFile
http://www.opencore.com/blog/2016/10/efficient-bulk-load-of-hbase-using-spark/ http://zeyuanxy.github.io/hbase_bulk_loading/
但是我的聚集數據在一開始就比較複雜一點。
源文件大約40GB的AVRO具有相當數量(可能爲空)的字段(> 200)的記錄。我的整個事情都經過了,但是在saveAsNewApihadoopFile容器開始因超過內存限制而死亡。我嘗試了更多數量的分區(最多4000個),但是當我給執行程序更多的內存(每個4 GB)時,仍然會收到容器失敗的問題。另外我得到非常高的GC時間,然後反過來使整個事情變得非常緩慢。
這裏有一些問題:
有誰知道我如何能夠進一步配置文件中的工作,找出究竟爲什麼執行人需要這麼多的內存?或者我能做些什麼來減輕它呢?
在調用saveAsNewApihadoopFile來縮小問題範圍並避免不必要的數據重新分配(我的工作流程的一部分是repartitionAndSortWithinPartition)之前,是否需要先執行一個操作?
謝謝!