我可以将cosmosdb中的嵌套模式保留为spark连接器吗?

时间:2017-11-07 03:04:42

标签: apache-spark pyspark azure-cosmosdb

我刚刚开始使用azure cosmosdb来激活连接器,将我的cosmosdb集合引入spark数据帧。不幸的是,使用基本的 select * from coll 查询,它会将任何嵌套结构展平为字符串。这个字符串的格式甚至不是json,所以我不知道如何解析它,格式如下:

{key1=value,key2=anothervalue} 

有没有办法cosmosdb连接器可以保存spark中的嵌套结构,或者有没有办法可以在spark中解析这个字符串格式?

2 个答案:

答案 0 :(得分:1)

您使用哪个版本的Spark连接器,Zach?

连接器通过对数据子集进行采样来派生模式。如果属性没有好的类型,那么它将使用String。您可以尝试使用schema_samplesize配置增加采样大小,默认值为1000.您是否有可能为属性值设置多种类型?或者是StructType和Null?对于后一种情况,我认为它将在版本0.0.5中修复。

答案 1 :(得分:0)

我知道这很旧,但是在2020年有同样的问题,所以:

  • 在对CosmosDb的查询中使用ToString(json_col)将为您提供一串类型为string的列,其中包含VALID json(:"而不是{{ 1}}一无所有。

  • 如果您查询的所有文档的架构都相同,则也可以以普通的方式(=)手动进行设置。