2017-04-05 18 views
0

spark-mongo 커넥터를 사용하여 Pyspark를 사용하여 MongoDB에 글을 쓰고 있습니다. 나는 DF 열에 '_id'만있다PySpark 데이터 프레임 - ObjectId로 타입을 변경하십시오.

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

이 명령으로 일부 문서를 편집 할 그때 내가 같은 _id를 입력 한 '문자열'다른과 MongoDB를에 문서를 얻을 실행할 때 하나는 '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)