如何修复从 cosmos db 中的 databricks scala 读取流中的“错误:未找到:键入 CosmosDBSourceProvider”

Posted

技术标签:

【中文标题】如何修复从 cosmos db 中的 databricks scala 读取流中的“错误:未找到:键入 CosmosDBSourceProvider”【英文标题】:How to fix "error: not found: type CosmosDBSourceProvider" in databricks scala read stream from cosmos db 【发布时间】:2019-11-11 10:13:26 【问题描述】:

我正在尝试在 databricks 上使用 scala 从 cosmos db 中读取流,方法是从以下来源:https://docs.microsoft.com/bs-latn-ba/azure/cosmos-db/spark-connector 但不知何故,scala 读取流代码的示例对我不起作用。

我一直在尝试导入更多库,例如“com.microsoft.azure.cosmosdb.spark.streaming._”,但仍然没有成功。

这是我正在尝试使用的 scala 代码

import com.microsoft.azure.cosmosdb.spark.schema._
import com.microsoft.azure.cosmosdb.spark._
import com.microsoft.azure.cosmosdb.spark.config.Config

val readConfig = Config(Map(
  "Endpoint" -> cosmos_endpoint,
  "Masterkey" -> cosmos_masterkey,
  "Database" -> "abc",
  "Collection" -> "123",
  "ReadChangeFeed" -> "true",
  "ChangeFeedQueryName" -> "Scala-Changefeed",
  "ChangeFeedStartFromTheBeginning" -> "true",
  "InferStreamSchema" -> "false",
  "ChangeFeedCheckpointLocation" -> ".../ChagefeedCheckpoint"))

 val changeFeed = spark.readStream.format(classOf[CosmosDBSourceProvider].getName).options(readConfig).load()

我得到的错误信息是

command-2054522864350223:16: error: not found: type CosmosDBSourceProvider
val changeFeed = spark.readStream.format(classOf[CosmosDBSourceProvider].getName).options(readConfig).load()
                                                 ^

【问题讨论】:

【参考方案1】:

也许你没有导入一些类。 我认为你可以替换

.format(classOf[CosmosDBSourceProvider].getName)

通过

.format("com.microsoft.azure.cosmosdb.spark.streaming.CosmosDBSourceProvider")

【讨论】:

以上是关于如何修复从 cosmos db 中的 databricks scala 读取流中的“错误:未找到:键入 CosmosDBSourceProvider”的主要内容,如果未能解决你的问题,请参考以下文章

如何仅比较 cosmos db 中的日期部分

如何在 Azure Cosmos DB 的一个查询中选择多个聚合值

如何从 Service Fabric Mesh 连接到 Azure Cosmos DB

如何使用 azure 流分析将 cosmos db 中的值更新为输出?

如何通过 Azure 虚拟网络从 power bi 桌面应用程序连接到 cosmos db

Azure Cosmos DB:将集合克隆到另一个数据库