2017-04-05 92 views
0

我正在使用spark-mongo连接器向Pyspark写入MongoDB。 我想用这个命令PySpark数据帧 - 将类型更改为ObjectId

df.write.format("com.mongodb.spark.sql.DefaultSource").options(uri=uri, collection="test").mode("append").save() 

DF有一栏“_id”,但编辑一些文档,当我运行的话,我得到的文件MongoDB中使用相同的_id,一个有型“字符串”和其他一个类型为“ObjectId”。有没有办法改变我的数据框中的列_id的类型?我发现该类型应该是StructType:{oid:String},但我不知道如何改变它。

感谢

回答

0

我的问题是,我其实是有我的收藏与_id字符串的一些文件和其他有_id的ObjectId所以当我与星火加载它有人推断,这个字段的类型为字符串。

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)