根据 Amazon S3 中的加密数据集创建表
创建表时,向 Athena 指示已在 Amazon S3 中加密数据集。使用 SSE-KMS 时不需要。对于 SSE-S3 和 AWS 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://amzn-s3-demo-bucket/
folder_with_my_encrypted_data
/' TBLPROPERTIES ( 'has_encrypted_data'='true') -
使用 JDBC 驱动程序 并设置
TBLPROPERTIES
值,如上一个示例中当您使用statement.executeQuery()
运行 CREATE TABLE 语句时所示。 -
使用 Athena 控制台使用表单创建表并指定表位置时,请选择 Encrypted data set(加密的数据集)选项。
在 Athena 控制台的表列表中,加密的表显示钥匙形图标。