athena 跳过以下划线开头的键

Jil*_*urp 4 amazon-athena

我正在尝试与 aws athena 合作,对我们存储在 s3 中的 json 文件进行一些查询。因此,我设法创建了一个简单的模式,一切似乎都很好,直到我注意到我的一些文件没有被考虑在内。

文件的键是用户 ID,其中一些以 _ 开头。所有这些在雅典娜中都缺失了。它们存在于 s3 中。我能得到它们。它们与其他文件类似。但雅典娜没有看到他们。

显然它不喜欢在键的开头使用下划线。除了重命名所有文件之外,还有其他方法可以解决此问题吗?键中其他地方的下划线似乎不是问题。

我的架构(我通过删除字段来简化它):

CREATE EXTERNAL TABLE IF NOT EXISTS db.table ( `user_id` string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://xyz/myfiles/' TBLPROPERTIES ('has_encrypted_data'='false');

Pra*_*ddy 6

当您查询表时,Amazon Athena 在底层使用 Presto。从 presto 版本 0.60 开始,Presto 会忽略以下划线 _ 或点开头的文件。这是 Hadoop MapReduce / Hive 的行为

https://prestodb.io/docs/current/release/release-0.60.html

请参阅presto 使用 org.apache.hadoop.hive.common.FileUtils.HIDDEN_FILES_PATH_FILTER 过滤隐藏文件的函数。由于该属性源自Hive,因此同样适用于 Hive 表,它将忽略特定位置的文件。