使用 Amazon Glue 连接到 Simple Storage Service(Amazon S3)中的数据来源 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon Glue 连接到 Simple Storage Service(Amazon S3)中的数据来源

Athena 可以使用 Amazon Glue Data Catalog 连接到 Amazon S3 中存储的数据,以便存储表和列名等元数据。建立连接后,数据库、表和视图将显示在 Athena 的查询编辑器中。

要定义供 Amazon Glue 使用的架构信息,您可以设置 Amazon Glue 爬网程序来自动检索信息,也可以手动添加表并输入架构信息。

创建 Amazon Glue 爬网程序

您可以通过在 Athena 控制台中启动,然后以集成方式使用 Amazon Glue 控制台来创建爬网程序。创建爬网程序时,您可以在 Amazon S3 中指定要爬取的数据位置。

在 Amazon Glue 中从 Athena 控制台开始创建爬网程序
  1. https://console.aws.amazon.com/athena/ 打开 Athena 控制台。

  2. 在查询编辑器中,选择 Tables and views(表和视图)旁的 Create(创建),然后选择 Amazon Glue crawler(爬网程序)。

  3. Amazon Glue 控制台的 Add crawler (添加爬网程序) 页面上,按照步骤创建爬网程序。有关更多信息,请参阅本指南中的使用 Amazon Glue 爬网程序和《Amazon Glue 开发人员指南》中的填充 Amazon Glue Data Catalog

注意

Athena 不承认您为 Amazon Glue 爬网程序指定的排除模式。例如,如果您有一个 Amazon S3 存储桶,其中包含 .csv.json 文件,并且您从爬网程序中排除了 .json 文件时,Athena 会查询两组文件。要避免这种情况,请将要排除的文件放置在其他位置。

使用表单添加表

以下过程演示了如何使用 Athena 控制台通过根据 S3 存储桶数据创建表表单添加表。

使用表单添加表并输入架构信息
  1. https://console.aws.amazon.com/athena/ 打开 Athena 控制台。

  2. 在查询编辑器中,选择 Tables and views(表和视图)旁边的 Create(创建),然后选择 S3 bucket data(S3 存储桶数据)。

  3. 根据 S3 存储桶数据创建表表单中,对于 Table name(表名称),输入表的名称。

  4. 对于 Database configuration(数据库配置),选择现有数据库或新建一个数据库。

  5. 对于 Location of Input Data Set(输入数据集的位置),在 Amazon S3 中指定包含要处理的数据集的文件夹的路径。请勿在路径中包含文件的名称。Athena 会扫描指定文件夹中的所有文件。如果您的数据已经分区(例如,

    s3://DOC-EXAMPLE-BUCKET/logs/year=2004/month=12/day=11/),则仅输入基本路径(例如,s3://DOC-EXAMPLE-BUCKET/logs/)。

  6. 对于 Data Format(数据格式),请选择以下选项:

    • 对于Table type(表格类型),选择 Apache HiveApache IcebergDelta Lake。Athena 的默认表类型是 Apache Hive。有关在 Athena 中查询 Apache Iceberg 表的信息,请参阅 使用 Apache Iceberg 表。有关在 Athena 中使用 Delta Lake 表的信息,请参阅 查询 Linux Foundation Delta Lake 表

    • 对于 File format(文件格式),选择您的数据将采用的文件或日志格式。

      • 对于 Text File with Custom Delimiters (带自定义分隔符的文本文件) 选项,请指定 Field terminator (字段终止符)(即列分隔符)。您也可以指定用于标记数组类型结束的 Collection terminator(集合终止符)或用于标记映射数据类型结束的 Collection terminator(集合终止符)。

    • SerDe 库 – SerDe(串行器解串器)库用于解析特定的数据格式,以便 Athena 可以为其创建表。对于大多数格式,系统会为您选择默认 SerDe 库。对于以下格式,请根据您的需要选择库:

      • Apache Web 日志 – 选择 RegexSerDeGrokSerDe 库。对于 RegexSerDe,请在 Regex definition(正则表达式定义)框中提供一个正则表达式。对于 GrokSerDe,为 input.format SerDe 属性提供一个已命名正则表达式系列。已命名正则表达式比正则表达式更便于阅读和维护。有关更多信息,请参阅查询存储在 Amazon S3 中的 Apache 日志

      • CSV – 如果以逗号分隔的数据不包含用双引号括起的值或者使用 java.sql.Timestamp 格式,请选择 LazySimpleSerDe。如果数据包含引号或为使用 UNIX 数字格式的 TIMESTAMP(例如,1564610311)时,请选择 OpenCSVSerDe。有关更多信息,请参阅 用于 CSV、TSV 和自定义分隔文件的 LazySimpleSerDe用于处理 CSV 的 OpenCSVSerDe

      • JSON – 选择 OpenXHive JSON SerDe 库。这两种格式都要求每个 JSON 文档均位于单行文本中,并且不使用换行字符分隔字段。OpenX SerDe 提供了一些额外的属性。有关这些属性的更多信息,请参阅OpenX JSON SerDe。有关 Hive SerDe 的多信息,请参阅 Hive JSON SerDe

      有关在 Athena 中使用 SerDe 库的更多信息,请参阅 支持的 SerDes 和数据格式

  7. 对于 SerDe properties(SerDe 属性),请根据您使用的 SerDe 库以及您的需求添加、编辑或移除属性及值。

    • 要添加 SerDe 属性,请选择Add SerDe property(添加 SerDe 属性)。

    • Name(名称)字段中,输入属性的名称。

    • Value(值)字段中,输入属性的值。

    • 要移除 SerDe 属性,请选择 Remove(移除)。

  8. 对于 Table properties(表属性),请根据您的需要选择或编辑表属性。

    • 对于 Write compression(写入压缩),选择一个压缩选项。写入压缩选项以及可用压缩选项的可用性取决于数据格式。有关更多信息,请参阅Athena 压缩支持

    • 对于 Encryption(加密),如果基础数据已在 Amazon S3 中加密,则选择 Encrypted data set(加密数据集)。此选项在 CREATE TABLE 语句中会将 has_encrypted_data 表属性设置为 true。

  9. 对于 Column details(列详细信息),输入要添加到表中的列名称和数据类型。

    • 要添加更多列(一次添加一列),请选择 Add a column (添加列)

    • 要快速添加更多列,请选择 Bulk add columns (批量添加列)。在文本框中,输入以逗号分隔的列列表,格式为 column_name data_type, column_name data_type[,…],然后选择 Add(添加)。

  10. (可选)对于 Partition details(分区详情),添加一个或多个列名称和数据类型。分区会根据列值将相关数据组合在一起,这可帮助减少每次查询扫描的数据量。有关分区的信息,请参阅 在 Athena 中对数据进行分区

  11. (可选)对于 Bucketing(分桶),您可以指定包含要组合在一起的行的一列或多列,然后将这些行放入多个桶中。这让您能够在指定分桶列值时仅查询要读取的桶。

    • 对于 Buckets(桶),选择一个或多个具有大量唯一值(例如,主键)且经常用于筛选查询中数据的列。

    • 对于 Number of buckets(桶数量),输入可优化文件大小的数字。有关更多信息,请参阅 Amazon 大数据博客中的 Top 10 Performance Tuning Tips for Amazon Athena(Amazon Athena 的十大性能优化技巧)。

    • 要指定分桶列,CREATE TABLE 语句将使用以下语法:

      CLUSTERED BY (bucketed_columns) INTO number_of_buckets BUCKETS
    注意

    Bucketing(分桶)选项不适用于 Iceberg 表类型。

  12. Preview table query(预览表查询)方框显示您在表单中输入的信息所生成的 CREATE TABLE 语句。无法直接编辑预览语句。要更改语句,请修改预览部分以上的表单字段,或在查询编辑器中 直接创建语句,而不使用表单。

  13. 选择 Create table(创建表),在查询编辑器中运行生成的语句并创建表。