以批处理模式写入 MongoDB
Overview
要将数据写入MongoDB,请对Dataset<Row>
对象调用 write()
方法。 此方法会返回一个DataFrameWriter
对象,您可以使用该对象指定批处理写入操作的格式和其他配置设置。
您必须指定以下配置设置才能写入MongoDB:
设置 | 说明 |
---|---|
dataFrame.write.format() | 指定根本的输出数据源的格式。 使用 mongodb 写入MongoDB。 |
dataFrame.write.option() |
以下示例从json
文件创建 DataFrame,并将其保存到 MongoDB 中的people.contacts
集合:
Dataset<Row> dataFrame = spark.read().format("json") .load("example.json"); dataFrame.write().format("mongodb") .mode("overwrite") .option("database", "people") .option("collection", "contacts") .save();
提示
DataFrame 类型
DataFrame
在Java API中不作为类存在。 使用Dataset<Row>
引用 DataFrame。
要将数据写入 MongoDB,请对DataFrame
对象调用write
函数。 此函数返回一个DataFrameWriter
对象,您可以使用该对象指定批处理写入操作的格式和其他配置设置。
您必须指定以下配置设置才能写入MongoDB:
设置 | 说明 |
---|---|
dataFrame.write.format() | 指定根本的输出数据源的格式。 使用 mongodb 写入MongoDB。 |
dataFrame.write.option() |
以下示例对SparkSession
对象使用createDataFrame()
函数,从包含姓名和年龄的元组列表以及列名称列表创建DataFrame
对象。 然后,该示例将此DataFrame
写入people.contacts
MongoDB 中的 collection 集合。
dataFrame = spark.createDataFrame([("Bilbo Baggins", 50), ("Gandalf", 1000), ("Thorin", 195), ("Balin", 178), ("Kili", 77), ("Dwalin", 169), ("Oin", 167), ("Gloin", 158), ("Fili", 82), ("Bombur", None)], ["name", "age"]) dataFrame.write.format("mongodb") .mode("append") .option("database", "people") .option("collection", "contacts") .save()
要将数据写入 MongoDB,请对DataFrame
对象调用write()
方法。 此方法会返回一个DataFrameWriter
对象,您可以使用该对象指定批量写入操作的格式和其他配置设置。
您必须指定以下配置设置才能写入MongoDB:
设置 | 说明 |
---|---|
dataFrame.write.format() | 指定根本的输出数据源的格式。 使用 mongodb 写入MongoDB。 |
dataFrame.write.option() |
以下示例从json
文件创建 DataFrame,并将其保存到 MongoDB 中的people.contacts
集合:
val dataFrame = spark.read.format("json") .load("example.json") dataFrame.write.format("mongodb") .mode("overwrite") .option("database", "people") .option("collection", "contacts") .save()
警告
保存模式
MongoDB Spark Connector支持以下保存模式:
append
overwrite
如果您指定 overwrite
写入模式,则connector会删除目标集合并创建使用默认集合选项的新集合。 此行为可能会影响不使用默认选项的集合,例如以下集合类型:
分片集合
具有非默认排序规则的集合
时间序列集合
要学习;了解有关保存模式的更多信息,请参阅 Spark SQL指南。
重要
如果写入操作包含具有null
值的字段,Connector会将字段名称和null
值写入MongoDB。 您可以通过设置写入配置属性ignoreNullValues
来更改此行为。
有关设置连接器写入行为的更多信息,请参阅写入配置选项。
API 文档
要了解有关这些示例中使用的类型的更多信息,请参阅以下 Apache Spark API 文档: