2017-04-05 39 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)