我刚刚启动了 Azure cosmosdb to Spark 连接器,以将我的 cosmosdb 集合引入 Spark 数据帧。 不幸的是,使用从 coll 查询中的基本选择 *,它将任何嵌套结构展平为字符串。 这个字符串的格式甚至不是json,所以我不知道如何解析它,格式看起来像:
{key1=value,key2=anothervalue}
是否有办法 cosmosdb 连接器可以在 Spark 中保留嵌套结构,或者有没有办法在 Spark 中解析这种字符串格式?
Zach,你使用的是哪个版本的Spark连接器?
连接器通过对数据子集进行采样来派生架构。如果属性没有好的类型,那么它将使用 String。您可以尝试使用schema_samplesize配置增加采样大小,默认值为 1000。属性值是否有可能有多种类型?还是结构类型和空?对于后一种情况,我认为它将在 0.0.5 版本中修复。
这很旧,但在 2020 年遇到了同样的问题,所以:
在对 CosmosDb 的查询中使用
ToString(json_col)
将为你提供一列字符串类型VALID
其中包含 json(:
和"
,而不是=
和任何内容)。如果查询的所有文档的架构相同,也可以以正常的 Spark 方式手动设置它 (
spark.read....schema(your_schema)...
)。