在 Athena 中创建表时,我无法使用特定文件创建表。有没有办法从给定的存储桶中选择以“year_2019”开头的所有文件?例如 s3://bucketname/prefix/year_2019*.csv
文档对此非常清楚,这是不允许的。
来自:https : //docs.aws.amazon.com/athena/latest/ug/tables-location-format.html
Athena 读取您在 CREATE TABLE 语句中指定的 Amazon S3 位置中的所有文件,并且不能忽略前缀中包含的任何文件。创建表时,在 Amazon S3 路径中仅包含您希望 Athena 读取的文件。使用 AWS Lambda 函数扫描源位置中的文件,删除任何空文件,并将不需要的文件移动到另一个位置。
我想知道社区是否找到了一些解决方法:)
The*_*heo 10
不幸的是,Athena 用于 S3 的文件系统抽象不支持这一点。它要求表位置看起来像目录,Athena 会在列出文件时在位置末尾添加一个斜杠。
有一种方法可以创建只包含选定文件的表,但据我所知它不支持通配符,只支持显式的文件列表。
你要做的是创建一个表
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat'
Run Code Online (Sandbox Code Playgroud)
然后不是LOCATION将表的 指向实际文件,而是将它指向带有单个symlink.txt文件的前缀(或将每个分区指向带有单个 的前缀symlink.txt)。在symlink.txt文件中,您添加要包含在表中的文件的 S3 URI,每行一个。
我所知道的有关此功能的唯一文档是用于与 Athena 集成的S3 Inventory 文档。
您还可以在此 Stackoverflow 响应中找到完整示例:https : //stackoverflow.com/a/55069330/1109
| 归档时间: |
|
| 查看次数: |
3473 次 |
| 最近记录: |