可以在 Redshift 中的特定目录中创建外部表吗?

Posted

技术标签:

【中文标题】可以在 Redshift 中的特定目录中创建外部表吗?【英文标题】:Can an external table be created in Redshift in specific directories? 【发布时间】:2018-12-17 18:15:01 【问题描述】:

我创建了一个外部表,它使用以下脚本读取指定路径中所有文件夹的文件:

CREATE EXTERNAL TABLE spectrum.eventos_ne9 (
event_date varchar(300),
event_timestamp varchar(300),
event_name varchar(300)
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://mybucket/myfolder/events_/'

现在我只想指向以 201812 开头的文件。 view image

我一直在尝试以下方式,但它没有保存任何数据:

CREATE EXTERNAL TABLE spectrum.eventos_ne9 (
event_date varchar(300),
event_timestamp varchar(300),
event_name varchar(300)
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://mybucket/myfolder/events_/201812.*'

【问题讨论】:

【参考方案1】:

只需使用's3://mybucket/myfolder/events_/201812',因为它已经指定了一个前缀。假定末尾的*

【讨论】:

您好,这是我尝试过的选项之一。但它没有奏效 这适用于正常的 Redshift COPY 负载,但我想它不适用于 Redshift Spectrum。文档显示格式为 's3://bucket/folder/' | 's3://bucket/manifest_file',所以我猜它需要一个文件夹而不是文件前缀。

以上是关于可以在 Redshift 中的特定目录中创建外部表吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 Impala 中创建外部表 - 错误

为啥在redshift中创建表需要很多时间?

尝试在 Redshift 中创建日期表

尝试使用 psycopg2.sql 在 python 中创建 Redshift 表

无法使用 ecto 在 redshift 中创建模式迁移表

需要 Where 子句中的属性 (Redshift)