根据 Amazon S3 中的加密数据集创建表 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

根据 Amazon S3 中的加密数据集创建表

创建表时,向 Athena 指示已在 Amazon S3 中加密数据集。使用 SSE-KMS 时不需要。对于 SSE-S3 和 Amazon KMS 加密,Athena 决定如何解密数据集和创建表,因此您无需提供密钥信息。

运行查询的用户(包括创建表的用户)必须具有本主题前面所述的权限。

重要

如果使用 Amazon EMR 以及 EMRFS 上载加密的 Parquet 文件,则必须通过将 fs.s3n.multipart.uploads.enabled 设置为 false 来禁用分段上载。如果您未执行此操作,则 Athena 无法确定 Parquet 文件长度,将出现 HIVE_CANNOT_OPEN_SPLIT 错误。有关更多信息,请参阅《Amazon EMR 管理指南》中的为 Amazon S3 配置分段上传

要指示 Amazon S3 中的数据集已加密,请执行以下步骤之一。如果使用 SSE-KMS,无需执行此步骤。

  • CREATE TABLE 语句,请使用 TBLPROPERTIES 子句指定 'has_encrypted_data'='true',如以下示例所示。

    CREATE EXTERNAL TABLE 'my_encrypted_data' ( `n_nationkey` int, `n_name` string, `n_regionkey` int, `n_comment` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' LOCATION 's3://bucket/folder_with_my_encrypted_data/' TBLPROPERTIES ( 'has_encrypted_data'='true')
  • 使用 JDBC 驱动程序 并设置 TBLPROPERTIES 值,如上一个示例中当您使用 statement.executeQuery() 运行 CREATE TABLE 语句时所示。

  • 使用 Athena 控制台使用表单创建表并指定表位置时,请选择 Encrypted data set(加密的数据集)选项。

    
                            在添加表单项中选择 Encrypted data set(加密的数据集)

在 Athena 控制台的表列表中,加密的表显示钥匙形图标。


                    加密表图标