根据文档,当您在Athena中创建表时,您需要在s3存储桶中指定输入数据文件的位置。您只能指定包含该文件的s3位置,但不能指定要使用的文件。例如,我有许多文件,如type1.log.gz,type2.log.gz,type3.log.gz,格式不同,位于my-bucket / logs /。
目前给出的位置是' // my-bucket / logs /'
因此可以指定要使用的文件(比如type2.log.gz)。 或者我是否必须将文件(type2.log.gz)复制到另一个没有其他文件的位置并指定其路径?
答案 0 :(得分:2)
Athena希望S3位置中的所有数据具有相同的架构。当你拥有一个非常大的表时,这是一个很大的帮助,因为它可以分解为Athena可以并行读取的许多文件,或者当你想要将数据添加到现有表时。但是,这确实意味着在一个S3位置具有不同模式的文件的情况下,您根本无法使用Athena。
在您的情况下,您需要将要查询的文件移动到其他位置,然后创建指向其位置的表格 - 例如。如果您复制到s3://my-bucket/logs/type2/type2.log.gz
,则表格应指向s3://my-bucket/logs/type2
。
答案 1 :(得分:0)
不,不可能。您有义务在外部存储桶中复制文件