2017-04-05 8 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」を持っていますが、私は、私は同じ_idでMongoDBの中の文書を取得することを実行すると、タイプ1「文字列」と他のコマンドで一部の文書を編集したいです1つはタイプ 'ObjectId'です。データフレーム内の_idの型を変更する方法はありますか?タイプがStructType:{oid:String}であることが判明しましたが、それを変更する方法はわかりません。

おかげ

答えて

0

私の問題は、私は実際に私はそれがこのフィールドの型が文字列だったと推測されたスパークとそれをロードしたので、私のコレクションの中_idのObjectIdといくつかの_id列を持つ文書や他の人を持っていたということです。

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)