无法使用 pySpark 从 Databricks 在 Cosmos DB/documentDB 中写入数据帧

Posted

技术标签:

【中文标题】无法使用 pySpark 从 Databricks 在 Cosmos DB/documentDB 中写入数据帧【英文标题】:Can't write dataframe in Cosmos DB / documentDB from Databricks with pySpark 【发布时间】:2018-12-15 21:29:52 【问题描述】:

在尝试将我一直在处理的数据框保存到 documentDB 集合时,我遇到了一个我不明白的错误。

堆栈上的其他类似问题指向为数据库或集合提供的不正确或区分大小写的名称,但我检查了这些......还有什么其他解释?分区键?地区?...

另一方面,我无法找到完整的文档,其中最终将提供给df.write.format("com.microsoft.azure.cosmosdb.spark").mode('overwrite').options(**ddbconfig).save()行的选项

Spark 在 Databricks 上给出的错误是:

com.microsoft.azure.documentdb.DocumentClientException: Message: 'Errors':['Owner resource does not exist']

StackTrace 提供了这些

Py4JJavaError: 
  An error occurred while calling o646.save. :
    com.microsoft.azure.documentdb.DocumentClientException: 
      Message: "Errors":["Owner resource does not exist"]

在 storereadresult 中给出的响应

LSN: 623, GlobalCommittedLsn: 623, PartitionKeyRangeId: , IsValid: True, StatusCode: 404, IsGone: False, IsNotFound: True, IsInvalidPartition: False, RequestCharge: 1, ItemLSN: -1, SessionToken: -1#623, ResourceType: Collection, OperationType: Read

编辑:与类似链接帖子不同的情况。尝试在新的空集合中写入数据时发生此错误。不读取现有数据。而且我已经在我的问题中澄清说,我已经探索了在这些类似帖子中发现的每条路径(主要是集合/数据库名称不匹配)。

【问题讨论】:

Azure DocumentDB Owner resource does not exist的可能重复 不,它不是重复的。您链接的问题(我在消息之前已经查看过)涉及类似的错误消息,但情况却完全不同。这是一个阅读错误,我的是一个写作错误。另外,在我的问题中,我注意到我检查了数据库和集合名称和大小写中任何可能的不匹配 【参考方案1】:

经过进一步调查,这是我使用的库版本中的一个错误。

通过从 azure-cosmosdb-spark_2.3.0_2.11-1.2.2-uber.jar 切换到 azure-cosmosdb-spark_2.3.0_2.11-1.2.7-uber.jar 解决

正如在 github 上看到的 https://github.com/Azure/azure-cosmosdb-spark/issues/268

【讨论】:

以上是关于无法使用 pySpark 从 Databricks 在 Cosmos DB/documentDB 中写入数据帧的主要内容,如果未能解决你的问题,请参考以下文章

无法从 databricks pyspark 工作人员写入 Azure Sql DataWarehouse

使用 Pyspark 将 SQL 查询从 DataBricks 发送到 SQL Server [重复]

如何使用正则表达式从 PySpark databricks 笔记本中的文件中解析表名

Pyspark 无法从 pathlib 对象加载

如何在 Databricks pyspark 中导入 Excel 文件

调用 NLTK 并在 databricks pyspark 上找不到“punkt”错误