我刚刚开始使用azure cosmosdb来激活连接器,将我的cosmosdb集合引入spark数据帧。不幸的是,使用基本的 select * from coll 查询,它会将任何嵌套结构展平为字符串。这个字符串的格式甚至不是json,所以我不知道如何解析它,格式如下:
{key1=value,key2=anothervalue}
有没有办法cosmosdb连接器可以保存spark中的嵌套结构,或者有没有办法可以在spark中解析这个字符串格式?
答案 0 :(得分:1)
您使用哪个版本的Spark连接器,Zach?
连接器通过对数据子集进行采样来派生模式。如果属性没有好的类型,那么它将使用String。您可以尝试使用schema_samplesize配置增加采样大小,默认值为1000.您是否有可能为属性值设置多种类型?或者是StructType和Null?对于后一种情况,我认为它将在版本0.0.5中修复。
答案 1 :(得分:0)
我知道这很旧,但是在2020年有同样的问题,所以:
在对CosmosDb的查询中使用ToString(json_col)
将为您提供一串类型为string的列,其中包含VALID
json(:
和"
而不是{{ 1}}一无所有。
如果您查询的所有文档的架构都相同,则也可以以普通的方式(=
)手动进行设置。