从 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'
在我的 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'