MongoDB火花冲突数据类型
如何在将Mongodb集合映射到Spark dataframe时避免冲突数据类型。我们无法将冲突数据类型强制转换为字符串。以及在执行选择操作时出错 我使用的是Mongodb Spark connector v2.10:1.0.0表示发现该字段包含不同的数据类型,无法强制转换为统一类型。换句话说,它包含不同类型的数据。i、 e.数字和字符串或字符串。 通过运行检查MongoDB火花冲突数据类型,mongodb,apache-spark,pyspark,Mongodb,Apache Spark,Pyspark,如何在将Mongodb集合映射到Spark dataframe时避免冲突数据类型。我们无法将冲突数据类型强制转换为字符串。以及在执行选择操作时出错 我使用的是Mongodb Spark connector v2.10:1.0.0表示发现该字段包含不同的数据类型,无法强制转换为统一类型。换句话说,它包含不同类型的数据。i、 e.数字和字符串或字符串。 通过运行检查ConflictType的数据帧字段 在中,解决方法是手动将数据帧的模式设置为字符串 在MongoDB Spark Connector
ConflictType
的数据帧字段
在中,解决方法是手动将数据帧的模式设置为字符串
在MongoDB Spark Connector v2中,冲突类型的基本类型将位于字符串中。另请参见。指示发现该字段包含无法强制为统一类型的不同数据类型。换句话说,它包含不同类型的数据。i、 e.数字和字符串或字符串。
通过运行检查ConflictType
的数据帧字段
在中,解决方法是手动将数据帧的模式设置为字符串
在MongoDB Spark Connector v2中,冲突类型的基本类型将位于字符串中。另请参见。对于那些正在使用v1连接器并需要进行手动解决的人,这里是我为解决此问题而创建的一些代码
val schema = com.mongodb.spark.MongoSpark
.read(sql)
.option("samplingRatio", "0.3")
.option("spark.mongodb.input.uri", uri)
.option("spark.mongodb.input.database", db)
.option("spark.mongodb.input.collection", COLLECTION)
.option("spark.mongodb.input.readPreference.name", "secondary")
.load()
// replace all instances of conflict with type string from the json
var schema_json = schema.schema.json.replace("\"type\":\"conflict\"", "\"type\":\"string\"")
//convert it into a struct object
val new_schema = DataType.fromJson(schema_json).asInstanceOf[StructType]
// then load the schema in with the conflict types removed and replaced with string
val table = com.mongodb.spark.MongoSpark.read(sql)
.schema(new_schema)
.option("spark.mongodb.input.uri", uri)
.option("spark.mongodb.input.database", db)
.option("spark.mongodb.input.collection", COLLECTION)
.option("spark.mongodb.input.readPreference.name", "secondary")
.load()
.repartition(6)
对于那些正在使用v1连接器并需要进行手动解决的人,这里是我为解决此问题而创建的一些代码
val schema = com.mongodb.spark.MongoSpark
.read(sql)
.option("samplingRatio", "0.3")
.option("spark.mongodb.input.uri", uri)
.option("spark.mongodb.input.database", db)
.option("spark.mongodb.input.collection", COLLECTION)
.option("spark.mongodb.input.readPreference.name", "secondary")
.load()
// replace all instances of conflict with type string from the json
var schema_json = schema.schema.json.replace("\"type\":\"conflict\"", "\"type\":\"string\"")
//convert it into a struct object
val new_schema = DataType.fromJson(schema_json).asInstanceOf[StructType]
// then load the schema in with the conflict types removed and replaced with string
val table = com.mongodb.spark.MongoSpark.read(sql)
.schema(new_schema)
.option("spark.mongodb.input.uri", uri)
.option("spark.mongodb.input.database", db)
.option("spark.mongodb.input.collection", COLLECTION)
.option("spark.mongodb.input.readPreference.name", "secondary")
.load()
.repartition(6)
在mongodb spark connector v1的情况下,是否有一个示例说明如何简单地执行此操作,而不必定义整个模式,在sparkContext上有没有一种说法是“冲突时默认模式为字符串”的功能?在mongodb spark connector v1的情况下,有没有一个例子说明如何在不必定义整个模式的情况下实现这一点,在sparkContext上有没有一种说法是“冲突时默认模式为字符串”的功能?