从第三方架构注册表迁移到 Amazon Glue 架构注册表 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

从第三方架构注册表迁移到 Amazon Glue 架构注册表

从第三方架构注册表到 Amazon Glue 架构注册表的迁移依赖于现有的当前第三方架构注册表。如果 Apache Kafka 主题中存在使用第三方架构注册表发送的记录,则使用者需要第三方模式注册表来反序列化这些记录。AWSKafkaAvroDeserializer 支持指定辅助反序列化程序类,该类指向第三方反序列化程序并用于反序列化这些记录。

第三方架构的停用有两个条件。第一,仅当使用器不再需要使用第三方架构注册表的 Apache Kafka 主题中的记录,并且这些记录不再适用于这些使用器,则会发生停用。第二,当根据为这些主题指定的保留期限退出 Apache Kafka 主题时,会发生停用。请注意,如果您的主题具有无限保留期,您仍然可以迁移到 Amazon Glue 架构注册表,但您将无法停用第三方架构注册表。作为一种解决方法,您可以使用应用程序或 Mirror Maker 2 从当前主题中读取并生成一个新主题,其中包含 Amazon Glue 架构注册表。

从第三方架构注册表迁移到 Amazon Glue 架构注册表

  1. 在 Amazon Glue 架构注册表中创建注册表,或者使用默认注册表。

  2. 停止使用器。对其进行修改以包含 Amazon Glue 架构注册表作为主要反序列化程序,第三方架构注册表作为辅助反序列化程序。

    • 设置使用器属性。在此示例中,secondary_deserializer 设置为不同的反序列化程序。行为如下所示:使用器从 Amazon MSK 检索记录,并首先尝试使用 AWSKafkaAvroDeserializer。如果无法读取包含 Amazon Glue 架构注册表架构的 Avro 架构 ID 的幻字节,则 AWSKafkaAvroDeserializer 尝试使用 secondary_deserializer 中提供的反序列化程序类。使用器属性中还需要提供特定于辅助反序列化程序的属性,例如 schema_registry_url_config 和 specific_avro_reader_config,如下所示。

      consumerProps.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); consumerProps.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, AWSKafkaAvroDeserializer.class.getName()); consumerProps.setProperty(AWSSchemaRegistryConstants.AWS_REGION, KafkaClickstreamConsumer.gsrRegion); consumerProps.setProperty(AWSSchemaRegistryConstants.SECONDARY_DESERIALIZER, KafkaAvroDeserializer.class.getName()); consumerProps.setProperty(KafkaAvroDeserializerConfig.SCHEMA_REGISTRY_URL_CONFIG, "URL for third-party schema registry"); consumerProps.setProperty(KafkaAvroDeserializerConfig.SPECIFIC_AVRO_READER_CONFIG, "true");
  3. 重启使用器。

  4. 停止创建器并将创建器指向 Amazon Glue 架构注册表。

    1. 设置创建器属性。在此示例中,创建器将使用默认注册表和自动注册架构版本。

      producerProps.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); producerProps.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, AWSKafkaAvroSerializer.class.getName()); producerProps.setProperty(AWSSchemaRegistryConstants.AWS_REGION, "us-east-2"); producerProps.setProperty(AWSSchemaRegistryConstants.AVRO_RECORD_TYPE, AvroRecordType.SPECIFIC_RECORD.getName()); producerProps.setProperty(AWSSchemaRegistryConstants.SCHEMA_AUTO_REGISTRATION_SETTING, "true");
  5. (可选)手动将现有架构和架构版本从当前第三方架构注册表移动到 Amazon Glue 架构注册表,即 Amazon Glue 架构注册表中的默认注册表或 Amazon Glue 架构注册表中的特定非默认注册表。以 JSON 格式从第三方架构注册表导出架构并使用 Amazon Web Services Management Console 或 Amazon CLI 在 Amazon Glue 架构注册表中创建新架构。

    如果您需要为使用 Amazon CLI 和 Amazon Web Services Management Console 新创建的架构版本启用与先前架构版本的兼容性检查,或者在启用架构版本自动注册的情况下发送包含新架构的消息时,则此步骤可能非常重要。

  6. 启动创建器。