从 S3 存储桶文件创建表

create tables from S3 bucket file

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

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

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

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

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

您不能将 文件 定义为 Amazon Athena 的 LOCATION。它将导致此错误消息:

Can't make directory for path 's3://my-bucket/foo.csv' since it is a file

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

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

顺便说一句,这一行:

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

还应指定存储桶名称:

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