在我的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个表吗?或者我可以将所有文件中需要的字段放在一个表中?
答案 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'