spark 讀取mongodb失敗,報executor time out 和GC overhead limit exceeded 異常

來源:互聯網
上載者:User

標籤:cee   imp   情況   use   根據   inpu   from   NPU   cti   

代碼:

import com.mongodb.spark.config.ReadConfigimport com.mongodb.spark.sql._val config = sqlContext.sparkContext.getConf.set("spark.mongodb.keep_alive_ms", "15000").set("spark.mongodb.input.uri", "mongodb://10.100.12.14:27017").set("spark.mongodb.input.database", "bi").set("spark.mongodb.input.collection", "userGroupMapping")val readConfig = ReadConfig(config)val objUserGroupMapping = sqlContext.read.format("com.mongodb.spark.sql").mongo(readConfig)objUserGroupMapping.printSchema()val tbUserGroupMapping=objUserGroupMapping.toDF()tbUserGroupMapping.registerTempTable("userGroupMapping")select _id,c,g,n,rn,t,ut from userGroupMapping where ut>‘2018-05-02‘ limit 100

使用上述的代碼取userGroupMapping 集合過後的100條記錄,出現了executor time out 和GC overhead limit exceeded 異常。一開始以為推測是task 從mongodb取的資料太大,導致spark executor記憶體不夠,後來調研了一下spark mongodb connector 在取資料的時候是條件下發的,也就是先從mongodb過濾再取回spark 記憶體,這樣的話就不會出現記憶體不夠的情況。後來在網上調研後,有一種說法是說task 太多,導致task gc的時候爭奪gc時間和記憶體資源(這個不是很清楚),根據這種說法,我把本來task core 從16個調成6個後再跑程式,居然不會報錯了。至於 具體原因還不是很清楚,先在這裡記錄一下。

spark 讀取mongodb失敗,報executor time out 和GC overhead limit exceeded 異常

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.