Pyspark 在读/写 mongodb 时保留 _id 的 ObjectId 类型

问题描述 投票:0回答:1

我在 mongodb 中有一个包含字段和 _id 的集合,如下所示:

_id: ObjectId('677d4aebcafa6974b025cbc2')

当我用 pyspark 读取它时,_id 的类型是字符串,没有任何更改,但只需在追加模式下将其写回到集合中,它就会创建一个新文档

_id: '677d4aebcafa6974b025cbc2'
,所以只是字符串

我尝试使用 bson.ObjectId 进行 udf

我尝试 struct(col(_id).alias(oid))

我将convertJson更改为objectOrArrayOnly

但没有任何作用,我无法通过重新创建 ObjectId 来更新文档

我想更新文档并在 mongoDB 中保留 _id 的 ObjectId 类型

mongodb pyspark
1个回答
0
投票

如果有人需要,我用 Spark Connector 10.4 成功了

你可以用这个

.withColumn("_id", concat(lit('{"$oid":"'), col("_id"), lit('"}')))

并需要在写入选项中添加

convertJson: objectOrArrayOnly

© www.soinside.com 2019 - 2024. All rights reserved.