首页 > 解决方案 > 在 databricks 中使用具有基本身份验证的融合 kafka-schema-registry-client 和托管融合模式注册表

问题描述

在我的 spark 应用程序中,我有以下 scala 代码

val restService = new RestService(schemaRegistryUrl)
val props = Map(
  "basic.auth.credentials.source" -> "USER_INFO",
  "basic.auth.user.info" -> "%s:%s".format(key, secret) 
).asJava
    
val schemaRegistryClient = new CachedSchemaRegistryClient(restService, 100, props)
// later:
schemaRegistryClient.getSchemaById(id) // fails with 401

我已经验证我能够使用相同的基本身份验证凭据从其他 API 中通过相同的 id 获取模式。但是使用代码,我得到一个身份验证错误 - 401。所以很明显我在这里遗漏了一些东西,我很乐意在这里寻求帮助。

restService 和 SchemaRegistry 6.2.1 的版本(我相信是最新的)

请注意,当我通过相同的模式注册表使用相同的凭据运行此代码时,这在本地有效,当我使用具有相同连接变量的 python 时,它在 databricks 中有效。只是使用来自databricks的Scala我得到401

标签: azure-databricksconfluent-schema-registry

解决方案


所以答案结果是,我的装配构建在我丢弃时丢弃了一些重要的东西META-INF,而不是丢弃它,但是明智地选择我需要的东西需要一些努力,但最终还是奏效了。然后它起作用了。

事实证明,我使用的 avro 版本 (1.10) 的 Confluent 模式注册表客户端的版本与 Databricks (3/3.1) 中仅支持 1.8 的现有 spark 版本不兼容


推荐阅读