从S3存储桶文件创建表

时间:2019-03-13 13:48:23

标签: amazon-web-services amazon-s3 amazon-athena

在我的S3存储桶中,我有几个具有不同架构的文件。

s3://folder/file1.csv
s3://folder/file2.csv
s3://folder/file3.csv
s3://folder/file4.csv

所有文件都包含我需要的字段,但是列数不同。

我尝试对其中一个文件执行此操作,但是创建的表仍然为空

CREATE  EXTERNAL TABLE test1 (
app_id string,
app_version string
)
row format delimited fields terminated by  ','
 LOCATION 's3://folder/file4.csv';


MSCK REPAIR TABLE test1;

我可以从这些文件创建3个表吗?或者我可以将所有文件中需要的字段放在一个表中?

1 个答案:

答案 0 :(得分:1)

您无法将文件定义为Amazon Athena的LOCATION。这将导致此错误消息:

  

由于它是文件,因此无法为路径“ s3://my-bucket/foo.csv”建立目录

您应将每个文件放在单独的文件夹中,然后将LOCATION设置到该文件夹​​。每个查询都会扫描该文件夹中的所有文件(即使只是一个文件)。

此外,除非它包含分区,否则无需调用MSCK REPAIR TABLE

顺便说一下,这行:

LOCATION 's3://folder/file4.csv'

还应指定存储桶名称:

LOCATION 's3://my-bucket/folder/file4.csv'