mongo spark 大型集合的推断模式
Posted
技术标签:
【中文标题】mongo spark 大型集合的推断模式【英文标题】:mongo spark infer schema for large collections 【发布时间】:2017-02-14 19:16:15 【问题描述】:我正在使用 mongo db spark 连接器 (mongo-spark-connector_2.10) 来读取 mongo 文档。我的问题是关于模式推断。
我看到 mongo spark 正在使用 MongoSinglePartitioner 来推断架构。因此,当我尝试对大集合(几百万个文档)进行采样以推断模式时,它非常慢。默认样本大小为 1000。mongo spark 是否有任何理由使用 SinglePartitioner 来推断架构而不是使用多个分区。我想从集合中读取所有字段,因此我从集合中抽取大量记录以推断模式。现在,对于 100 万条记录,模式推断需要 20 分钟。
有什么方法可以指定不同的分区器来推断模式以加速模式推断?或者 是否有任何其他方法可以从 mongo 推断大型集合的架构。
【问题讨论】:
【参考方案1】:是否有任何其他方法可以从 mongo 推断大集合的模式。
一般来说,如果您有一个大型集合要加载并且已经知道架构,您会想要显式定义架构。
您可以使用简单的案例类来定义架构,防止额外的查询并加快加载过程。 例如:
case class Creature(name: String, strength: Int, type: String)
val explicitDF = MongoSpark.load[Creature](sparkSession)()
explicitDF.printSchema()
【讨论】:
以上是关于mongo spark 大型集合的推断模式的主要内容,如果未能解决你的问题,请参考以下文章
使用 databrics spark API 推断 xml 处理的模式选项
spark 大型项目实战:用户访问session分析 --单例模式
spark 大型项目实战:用户访问session分析 --单例模式
pyspark.sql.utils.AnalysisException:u'无法推断Parquet的模式。必须手动指定。