创建架构 - AWS Glue

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

创建架构

您可以使用 AWS Glue API 或 AWS Glue 控制台创建架构。

AWS Glue API

您可以按照以下步骤使用 AWS Glue API 执行此任务。

要添加新架构,请使用 CreateSchema 操作(Python:create_schema) API。

指定 RegistryId 结构,指示架构的注册表。或者,忽略 RegistryId,使用默认注册表。

指定 SchemaName(包含字母、数字、连字符或下划线)和 DataFormatAVRO 或者 JSONDataFormat 一旦在架构上设置,便不可更改。

指定 Compatibility 模式:

  • 向后兼容(推荐)– 使用者可以读取当前版本和先前版本。

  • 向后兼容全部 – 使用者可以读取当前版本和所有先前版本。

  • 向前兼容 – 使用者可以读取当前版本和后续版本。

  • 向前兼容全部 – 使用者可以读取当前版本和所有后续版本。

  • 完整兼容 – 向后兼容和向前兼容的组合。

  • 完整兼容全部 – 向后兼容全部和向前兼容全部的组合。

  • – 不执行兼容性检查。

  • 已禁用 – 防止对此架构进行任何版本控制。

(可选)为您的架构指定 Tags

指定 SchemaDefinition,以 Avro、JSON 或 Protobuf 数据格式定义架构。请参阅示例。

对于 Avro 数据格式:

aws glue create-schema --registry-id RegistryName="registryName1" --schema-name testschema --compatibility NONE --data-format AVRO --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}"
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName1" --schema-name testschema --compatibility NONE --data-format AVRO --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}"

对于 JSON 数据格式:

aws glue create-schema --registry-id RegistryName="registryName" --schema-name testSchemaJson --compatibility NONE --data-format JSON --schema-definition "{\"$schema\": \"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"properties\":{\"f1\":{\"type\":\"string\"}}}"
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName" --schema-name testSchemaJson --compatibility NONE --data-format JSON --schema-definition "{\"$schema\": \"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"properties\":{\"f1\":{\"type\":\"string\"}}}"

对于 Protobuf 数据格式:

aws glue create-schema --registry-id RegistryName="registryName" --schema-name testSchemaProtobuf --compatibility NONE --data-format PROTOBUF --schema-definition "syntax = \"proto2\";package org.test;message Basic { optional int32 basic = 1;}"
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName" --schema-name testSchemaProtobuf --compatibility NONE --data-format PROTOBUF --schema-definition "syntax = \"proto2\";package org.test;message Basic { optional int32 basic = 1;}"
AWS Glue 控制台

使用 AWS Glue 控制台添加新架构

  1. 登录 AWS 管理控制台,然后通过以下网址打开 AWS Glue 控制台:https://console.aws.amazon.com/glue/

  2. 在导航窗格的 Data catalog (数据目录) 下,选择 Schemas (架构)

  3. 选择 Add schema (添加架构)

  4. 输入 Schema name (架构名称),包含字母、数字、连字符、下划线、美元符号或哈希标记。此名称不能更改。

  5. 选择 Registry (注册表),这是架构在下拉菜单中的存储位置。父注册表在创建后无法更改。

  6. Data format (数据格式) 保留为 Apache Avro 或者 JSON。此格式适用于此架构的所有版本。

  7. 选择 Compatibility mode (兼容性模式)

    • 向后兼容(推荐)– 接收者可以读取当前版本和先前版本。

    • 向后兼容全部 – 接收者可以读取当前版本和所有先前版本。

    • 向前兼容 – 发件人可以写入当前版本和先前版本。

    • 向前兼容全部 – 发件人可以写入当前版本和所有先前版本。

    • 完整兼容 – 向后兼容和向前兼容的组合。

    • 完整兼容全部 – 向后兼容全部和向前兼容全部的组合。

    • – 不执行兼容性检查。

    • 已禁用 – 防止对此架构进行任何版本控制。

  8. 为注册表输入可选 Description (说明),最多 250 个字符。

    架构创建示例。
  9. (可选)将一个或多个标签应用于架构。选择 Add new tag (添加新标签),指定 Tag key (标签键)Tag value (标签值)(可选)。

  10. First schema version (第一个架构版本) 框中,输入或粘贴您的初始架构。

    有关 Avro 格式的信息,请参阅使用 Avro 数据格式

    有关 JSON 格式的信息,请参阅使用 JSON 数据格式

  11. (可选)选择 Add metadata (添加元数据) 添加版本元数据,对架构版本进行注释或分类。

  12. 选择 Create schema and version (创建架构和版本)

架构创建示例。

该架构在 Schemas (架构) 下面的列表中创建并显示。

使用 Avro 数据格式

Avro 提供数据序列化和数据交换服务。Avro 以 JSON 格式存储数据定义,使其易于阅读和解释。数据本身以二进制格式存储。

有关定义 Apache Avro 架构的信息,请参阅 Apache Avro 规范

使用 JSON 数据格式

数据可以使用 JSON 格式进行序列化。JSON 架构格式定义了 JSON 架构格式的标准。