我使用spark-mongo连接器使用Pyspark写入MongoDB。 我想用这个命令编辑一些文件
df.write.format("com.mongodb.spark.sql.DefaultSource").options(uri=uri, collection="test").mode("append").save()
df有一个列'_id',但是当我运行它时,我会使用相同的_id获取MongoDB中的文档,一个类型为'String',另一个类型为'ObjectId'。有没有办法在我的数据框中更改列_id的类型?我发现类型应该是StructType:{oid:String}但我不知道如何改变它。
由于
答案 0 :(得分:0)
我的问题是我实际上有一些带有_id字符串的文档和其他带有_id ObjectId的文档,所以当我用Spark加载它时,它推断出这个字段的类型是字符串。
答案 1 :(得分:0)
您应该尝试在数据框上强制输入类型。
尝试在创建它时使用特定架构。 SQLContext - CreateDataFrame
from pyspark.sql.types import *
schema = StructType([
StructField('_id', StringType(), True),
StructField('published', StringType(), True),
...
])
...
df =sql_context.createDataFrame(json_events, schema=schema)