【发布时间】:2019-09-30 14:10:37
【问题描述】:
我在从 Databricks 中的 Cosmos DB 读取项目时遇到了一些问题,它似乎将 JSON 作为字符串值读取,并且在将数据从中获取到列时遇到了一些问题。
我有一个名为 ProductRanges 的列,其中连续包含以下值:
[ {
"name": "Red",
"min": 0,
"max": 99,
"value": "Order More"
},
{
"name": "Amber",
"min": 100,
"max": 499,
"value": "Stock OK"
},
{
"name": "Green",
"min": 500,
"max": 1000000,
"value": "Overstocked"
}
]
在 Cosmos DB 中,JSON 文档是有效的,在导入数据时,数据框中的数据类型是字符串,而不是我期望的 JSON 对象/结构。
我希望能够计算“名称”出现的次数并遍历它们以获取最小值、最大值和值项,因为我们可以拥有的范围数可能超过 3。我已经在 stackoverflow 和其他地方发表了几篇文章,但一直停留在格式上。我尝试使用爆炸并读取基于列值的架构,但它确实说“在有效文档中”,认为这可能是由于 Pyspark 在开始和结束时需要 {},但甚至将其连接在来自 cosmos db 的 SQL 查询仍然以字符串的数据类型结束。
任何指针将不胜感激
【问题讨论】:
-
更新:经过一番调查,看起来它是作为字符串从 CosmosDB 读取的。如果我创建一个新文档,并将其命名为 productRangesAlt,然后将其导入,它会将其作为数组读取,我可以将其分解。所以在某些时候,productRanges 可能是一个字符串,但是 CosmosDB 并没有接受更改。目前 Cosmos DB 环境是一个开发者,我可以擦除该架构并查看重新加载是否会修复它
标签: json pyspark databricks azure-databricks