MongoDB on Spark的参数优化

时间:2025-04-12 07:35:24

MongoDB on Spark的参数优化

mongodb on spark的参数:

mongodb on spark的参数基本分为输入参数和输出参数。

1. mongodb on spark输入的参数:
  • :mongo的uri,

    如:mongodb://host:port/

    或者直接指定数据库和集合:mongodb://host:port/,相当于使用了uri,database,collection参数

  • :mongo的数据库指定

  • :mongo的集合

  • :用于对数据进行分区的分区程序的类名

    默认使用:MongoDefaultPartitioner,其他值有:

    • MongoSamplePartitioner:使用集合的平均文档大小和随机抽样来确定集合的合适分区。

    • MongoShardedPartitioner:根据数据块对集合进行分区。需要对config数据库的读访问权限。

    • MongoSplitVectorPartitioner:使用splitVector独立命令或主数据库上的命令来确定数据库的分区。需要特权才能运行splitVector命令

    • MongoPaginateByCountPartitioner:创建特定数量的分区。需要查询每个分区。

    • MongoPaginateBySizePartitioner:根据数据大小创建分区。需要查询每个分区。

    每个Partitioner类都有option参数,具体参阅文档

2. mongodb on spark输出的参数
  • :和输入参数一样

  • :和输入参数一样

  • :和输入参数一样

  • :保存包含_id字段的数据集时替换整个文档。如果为false,它将仅更新文档中与数据集中的字段匹配的字段。默认true。

  • maxBatchSize:保存数据时批量操作的最大批量大小。默认512M。


3. mongodb on spark的参数添加

mongodb on spark的参数添加有2种方式,可以通过spark的conf添加,也可以通过option添加参数的方式进行添加。

3.1 通过config的方式进行添加

val spark = ()
      .master("local")
      .appName("MongoSparkConnectorIntro")
      .config("", "mongodb://127.0.0.1/")
      .config("", "mongodb://127.0.0.1/")
      .getOrCreate()

这里也可以通过config添加其他参数。

3.2 通过option的方式进行添加

# 输入参数添加

("") \
    .option("", "MongoPaginateByCountPartitioner") \
    .option("", 'service_time') \
    .option("", "10") \
    .schema(collect_schema) \
    .load()



# 输出参数添加

('')
    .option("", "mongodb://127.0.0.1/") \
    .mode("append")\
    .save()

参考文档:
MongoDB on Spark的参数优化