Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB火花冲突数据类型_Mongodb_Apache Spark_Pyspark - Fatal编程技术网

MongoDB火花冲突数据类型

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

如何在将Mongodb集合映射到Spark dataframe时避免冲突数据类型。我们无法将冲突数据类型强制转换为字符串。以及在执行选择操作时出错

我使用的是Mongodb Spark connector v2.10:1.0.0

表示发现该字段包含不同的数据类型,无法强制转换为统一类型。换句话说,它包含不同类型的数据。i、 e.数字和字符串或字符串。 通过运行检查
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上有没有一种说法是“冲突时默认模式为字符串”的功能?