如何修复从 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”的主要内容,如果未能解决你的问题,请参考以下文章