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

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

使用 AWS Glue 连接到 Amazon S3 中的数据源

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

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

设置爬网程序

您可以通过在 Athena 控制台中启动,然后以集成方式使用 AWS Glue 控制台来设置爬网程序。创建爬网程序时,可以选择要爬取的数据存储或将爬网程序指向现有目录表。

注意

设置爬网程序的步骤取决于 Athena 控制台中可用的选项。如果 Option A (选项 A) 中的 Connect data source (连接数据源) 链接不可用,请使用 Option B (选项 B) 中的过程。

选项 A

选项 A:使用 AWS GlueConnect data source (连接数据源) 链接在 中设置爬网程序

  1. https://console.amazonaws.cn/athena/ 打开 Athena 控制台。

  2. 选择 Connect data source (连接数据源)。如果 Connect data source (连接数据源) 链接不存在,请使用选项 B

    
                            选择 Connect data source (连接数据源)。
  3. Connect data source (连接数据源) 页面上,选择 AWS Glue Data Catalog

  4. 单击 Next (下一步)

  5. 连接详细信息页面上,选择在 AWS Glue 中设置爬网程序以自动检索架构信息

  6. 单击 Connect to AWS AWS Glue。

  7. AWS Glue 控制台的 Add crawler (添加爬网程序) 页面上,按照步骤创建爬网程序。

    有关更多信息,请参阅填充 AWS Glue 数据目录

选项 B

如果在 AWS Glue 控制台中,选项 A 中的 Connect data source (连接数据源) 链接不可用,请使用以下过程设置 Athena 爬网程序。

选项 B:从 AWS GlueAWS Glue Data Catalog 链接在 中设置爬网程序

  1. https://console.amazonaws.cn/athena/ 打开 Athena 控制台。

  2. 选择 AWS Glue Data Catalog

    
                            选择 AWS Glue Data Catalog。
  3. 在 AWS Glue 控制台的 Tables (表) 页面上,选择 Add tables using a crawler (使用爬网程序添加表)

    
                            选择 Add tables using a crawler (使用爬网程序添加表)。
  4. AWS Glue 控制台的 Add crawler (添加爬网程序) 页面上,按照步骤创建爬网程序。

    有关更多信息,请参阅填充 AWS Glue 数据目录

注意

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

手动添加架构表

以下过程演示了如何使用 Athena 控制台手动添加表。

手动添加表并输入架构信息

  1. https://console.amazonaws.cn/athena/ 打开 Athena 控制台。

  2. 选择 Connect data source (连接数据源)

  3. Connect data source (连接数据源) 页面上,选择 AWS Glue Data Catalog

  4. 单击 Next (下一步)

  5. Connection details (连接详细信息) 页面上,选择 Add a table and enter schema information manually (手动添加表并输入架构信息)

  6. 单击 Continue to add table (继续添加表)

  7. 控制台的 Add table (添加表)Athena 页面上,对于 Database (数据库),选择现有数据库或创建新数据库。

  8. 输入或选择表名称。

  9. 对于 Location of Input Data Set (输入数据集的位置),在 Amazon S3 中指定包含要处理的数据集的文件夹的路径。

  10. 单击 Next (下一步)

  11. 对于 Data Format (数据格式),请选择一种数据格式(Apache Web Logs (Apache Web 日志)CSVTSVText File with Custom Delimiters (带自定义分隔符的文本文件)JSONParquetORC)。

    • 对于 Apache Web Logs (Apache Web 日志) 选项,您还必须在 Regex (正则表达式) 框中输入正则表达式。

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

  12. 对于 Columns (列),指定列名称和列数据类型。

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

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

  13. 选择 Next (下一步)

  14. (可选)对于 Partitions (分区),单击 Add a partition (添加分区) 以添加列名称和数据类型。

  15. 选择 Create Table。您指定的表的 DDL 将显示在 Query Editor (查询编辑器) 中。以下示例显示了为 CSV 格式的两列表生成的 DDL:

    CREATE EXTERNAL TABLE IF NOT EXISTS MyManualDB.MyManualTable ( `cola` string, `colb` string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = ',', 'field.delim' = ',' ) LOCATION 's3://bucket_name/' TBLPROPERTIES ('has_encrypted_data'='false');
  16. 选择 Run query (运行查询) 以创建表。