为 ETL 作业创建表
可以使用 Athena 来创建 AWS Glue 可用于 ETL 作业的表。AWS Glue 作业执行 ETL 操作。AWS Glue 任务运行一个从源中提取数据、转换数据并将其加载到目标中的脚本。有关更多信息,请参阅《AWS Glue 开发人员指南》中的在 AWS Glue 中编写任务。
为 AWS Glue ETL 作业创建 Athena 表
您在 Athena 中创建的表必须添加有名为 classification
的表属性,该属性标识数据的格式。这使 AWS Glue 能够将这些表用于 ETL 任务。分类值可以是 avro
、csv
、json
、orc
、parquet
或 xml
。下面是 Athena 中的示例 CREATE TABLE
语句:
CREATE EXTERNAL TABLE sampleTable ( column1 INT, column2 INT ) STORED AS PARQUET TBLPROPERTIES ( 'classification'='parquet')
如果在创建表时未添加 classification
表属性,则可以使用 AWS Glue 控制台添加它。
使用 AWS Glue 控制台添加分类表属性
登录 AWS Management Console,然后打开 AWS Glue 控制台,网址为:https://console.aws.amazon.com/glue/
。 -
在控制台导航窗格中。选择 Tables(表)。
-
选择您要编辑的表的链接,然后依次选择 Action(操作)、Edit table(编辑表)。
-
向下滚动到 Table properties(表属性)部分。
-
选择添加。
-
对于键,输入
classification
。 -
对于 Value(值),输入数据类型(例如
json
)。 -
选择保存。
在 Table details(表详细信息)部分中,您输入的数据类型显示在表的 Classification(分类)字段中。
有关更多信息,请参阅《AWS Glue 开发人员指南》中的使用表。
使用 ETL 作业优化查询性能
AWS Glue 任务可帮助您将数据转换为一种可优化 Athena 中的查询性能的格式。数据格式会极大影响 Athena 中的查询性能和查询成本。
AWS Glue 支持写入 Parquet 和 ORC 数据格式。可以使用此功能来转换数据以在 Athena 中使用。有关使用 Parquet 和 ORC 以及提高 Athena 性能的其他方法的更多信息,请参阅 Top 10 performance tuning tips for Amazon Athena
注意
要减少 Athena 无法读取 AWS Glue ETL 作业生成的 SMALLINT
和 TINYINT
数据类型的可能性,请在创建将数据转换为 ORC 的 ETL 作业时,将 SMALLINT
和 TINYINT
转换为 INT
。
为 ETL 自动执行 AWS Glue 作业
您可以将 AWS Glue ETL 任务配置为基于触发器自动运行。当来自 AWS 外部的数据被以次优格式推送到 Amazon S3 存储桶以便在 Athena 中查询时,此功能非常适用。有关更多信息,请参阅《AWS Glue 开发人员指南》中的触发 AWS Glue 任务。