2017-02-14 78 views
0

我正在使用mongo db spark連接器(mongo-spark-connector_2.10)讀取mongo文檔。我的問題是關於模式推理。mongo spark推斷大集合的模式

我看到mongo spark正在使用MongoSinglePartitioner來推斷模式。所以當我嘗試抽樣大集合(幾百萬個文檔)來推斷模式時,它非常緩慢。默認樣本大小爲1000. mongo spark是否有任何理由使用SinglePartitioner來推斷架構,而不是使用多個分區。我想讀取集合中的所有字段,因此我正在從集合中抽取大量記錄以推斷模式。現在對於100萬條記錄模式推斷需要20分鐘。

有沒有什麼辦法可以指定不同的分區器來推斷模式以加速模式推理?或 有沒有其他方法可以從mongo中爲大集合推斷模式?

回答

0

是否有任何其他方法從mongo推斷大集合的模式。

一般來說,如果你有一個很大的集合來加載,並且已經知道模式,你希望顯式地定義模式。

您可以使用簡單的案例類來定義模式,防止額外的查詢並加快加載過程。例如:

case class Creature(name: String, strength: Int, type: String) 

val explicitDF = MongoSpark.load[Creature](sparkSession)() 
explicitDF.printSchema()