【发布时间】:2022-01-23 16:04:14
【问题描述】:
我对 pyspark 中的架构有疑问。我正在尝试使用胶水动态框架从 MongoDB 中读取完整的集合。
read_mongo_options = {
"uri": mongo_uri,
"database": "database",
"collection": collection,
"ssl": "true",
"username": "user",
"password": "password",
"sampleSize": "200000",
"partitioner": "MongoSamplePartitioner",
"partitionerOptions.partitionSizeMB": "10",
"partitionerOptions.partitionKey": "_id"
}
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="mongodb",
connection_options=read_mongo_options,transformation_ctx = "datasource0")
df=datasource0.toDF()
我认为它无法解释在同一字段中具有不同值的模式。 这是一个示例中的 defaultPaymentsource 的值;
"defaultPaymentsource": {
"$oid": "58f0933bXXXXXXXXXX"
},
在其他文档中,该字段不再存在 推断架构后,结果如下:
当我尝试保存或显示结果时,出现以下错误
Cannot cast UNDEFINED into a StructType(StructField(oid,StringType,true))
我已将 samplesize 的值设置为最大值,并通过删除对“未定义”的引用更改了架构,但结果始终相同。 有什么想法吗?
【问题讨论】:
标签: python mongodb pyspark aws-glue aws-glue-spark