Amazon Athena的S3数据位置

cs0*_*815 1 amazon-s3 amazon-web-services amazon-athena

我创建了一个Amazon S3存储桶并上传了一个平面文件(着名的Iris花数据集数据为csv).

我现在想在Amazon Athena中创建一个Iris数据集平台并进行查询.我找不到"输入数据集的位置".

如何确定我的平面Iris文件在S3存储桶中的位置?是否可能有上述情况的教程(谷歌还没有多少帮助)?

Joh*_*ein 7

根据Amazon Athena CREATE TABLE文档,创建表的语法是:

CREATE [EXTERNAL] TABLE [IF NOT EXISTS]
 [db_name.]table_name [(col_name data_type [COMMENT col_comment] [, ...] )]
 [COMMENT table_comment]
 [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
 [ROW FORMAT row_format]
 [STORED AS file_format] [WITH SERDEPROPERTIES (...)] ]
 [LOCATION 's3_loc']
 [TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['classification'='aws_glue_classification',] property_name=property_value [, ...] ) ]
Run Code Online (Sandbox Code Playgroud)

s3_loc方法是:

指定从中创建表的Amazon S3中的基础数据的位置,例如s3://mystorage/.有关数据格式和权限等注意事项的详细信息,请参阅在Amazon S3中从基础数据创建表.

对文件夹或存储桶使用尾部斜杠.不要使用文件名或glob字符.

使用: s3://mybucket/myfolder/

不要使用: s3://path_to_bucket s3://path_to_bucket/* s3://path_to-bucket/mydatafile.dat

因此,如果您将平面文件存储在名为my-bucket目录的存储区中,则iris可以使用:

LOCATION s3://my-bucket/iris/
Run Code Online (Sandbox Code Playgroud)

请注意,您指向目录,而不是文件.这是因为许多数据集存储为多个文件(甚至多个子目录).