当前位置: 首页 > 知识库问答 >
问题:

从java API粘合模式注册表

关翰
2023-03-14

我试图从Scala的Glue Schema Registry中的特定模式名称中获取所有模式版本id,但是它抛出了一个错误:

val cred: AWSCredentialsProvider =new AWSStaticCredentialsProvider(new BasicSessionCredentials("***", "***", ""))
val schemas = AWSSchemasClient
  .builder()
  .withCredentials(cred)
  .build()
val request = new ListSchemasRequest()
request.setRegistryName("registry")
request.setSchemaNamePrefix("schema")
schemas.listSchemas(request).toString

错误:

com.amazonaws.protocol.json.JsonErrorShapeMetadata.withExceptionUnmarshaller(Lcom/amazonaws/transform/JsonErrorUnmarshaller;)Lcom/amazonaws/protocol/json/JsonErrorShapeMetadata;

依赖关系是

  "com.amazonaws" % "aws-java-sdk-core" % "1.12.93" % Compile,
  "com.amazonaws" % "aws-java-sdk" % "1.12.93" % Compile,

我如何修复这个错误?

共有1个答案

邰伟彦
2023-03-14

最后,我解决了这个错误,首先使用aws java开发工具包v2:

  "software.amazon.awssdk" % "sdk-core" % "2.17.61" % Compile,
  "software.amazon.awssdk" % "aws-sdk-java" % "2.17.61" % Compile,
  "software.amazon.awssdk" % "aws-json-protocol" % "2.17.61" % Compile

然后通过这段代码,我得到了模式:

val cred: AwsCredentialsProvider = ProfileCredentialsProvider.builder().profileName("profile").build()
val glueClient = GlueClient.builder().credentialsProvider(cred).build()    

val schemaId = SchemaId.builder().registryName("registry").schemaName("schema").build()
    val schemaVersionsRequest = ListSchemaVersionsRequest.builder().schemaId(schemaId).build()
    val list = glueClient.listSchemaVersions(schemaVersionsRequest)
    list.schemas().forEach(v=> {
        val schemaVersionNumber=SchemaVersionNumber.builder().versionNumber($v).build()
    val getSchemaVersion= GetSchemaVersionRequest.builder().schemaVersionNumber(schemaVersionNumber).schemaId(schemaId).build()
    val schemaVer=glueClient.getSchemaVersion(getSchemaVersion)
    println(schemaVer.toString)
    })
 类似资料:
  • 我正在了解Confluent的模式注册表,以满足所有模式管理需求。 我不太理解他们的版本控制方法...有一个的概念,我将其视为一个名称空间。据我所知,subject在模式注册表中必须是唯一。 然后是模式id,或者只是,它也是唯一的。 最后,还有一个。 以下是文档中的片段: :此主题的架构版本,每个主题从1开始 :全局唯一的架构版本id,在所有主题中的所有架构中都是唯一的 因此,一旦我想修改特定主题

  • 我现在一直在查看Spring Cloud模式注册表和汇合模式注册表。我可以看到一些区别,例如Spring Cloud模式注册表将模式保存在普通数据库中,默认情况下保存在h2中,而汇合模式注册表保存在kafka主题中。 spring云模式注册表的这种方法是否会对性能产生任何影响。据我所知,即使数据保留在主题上,以防汇合,查询它时仍然会有延迟。但会有重大影响吗? 我还可以看到,spring云模式注册表

  • 我使用来自Confluent的Kafka Connect来使用Kafka流并以拼花格式写入HDFS。我正在1个节点中使用架构注册表服务,它运行良好。现在我想将模式注册表分发到集群模式以处理故障转移。关于如何实现这一点的任何链接或片段都将非常有用。

  • 我们正在开发并尝试删除主题的模式,因为更改与旧模式不兼容。 我们删除了模式/主题,并尝试使用相同的主题名称创建新模式,成功创建了模式。 然而,当我们运行应用程序时,它仍然指向相同的模式ID。 旧模式ID(主题“topic1”):51 新架构ID(主题“topic1”):52 应用程序在反序列化消息时出错 <代码>root@bas:/#curl-khttps://schemaregistry:443

  • 我希望即使服务器重新启动,也能保持一个具有固定id的模式。 是否可以在模式注册表中保存模式,以便在服务器崩溃后使用相同的id? 否则,是否有可能在模式注册表服务器启动时用固定的id硬编码一个模式?

  • 我正在尝试使用Confluent schema registry,下面是我在Github中找到的一些示例(https://github.com/gAmUssA/springboot-kafka-avro). 当消费者和生产者与模型共享相同的命名空间而不是其工作时。 当使用者位于具有不同名称空间但具有相同类(名称和属性方面)的不同项目中时,它不工作。 合流Avro反序列化程序可以使用正确的值反序列化