按“$ path”字段查询

问题描述 投票:0回答:1

我想通过表中的分区下的文件/文件组进行查询。我发现当我使用“$ path”字段时,Athena扫描整个分区,而不是我想要的文件

有没有办法使这种查询更有效,只扫描给定的文件?像文件的分区修剪...

这是一个示例查询:

SELECT *
FROM my_table
WHERE day = '2019-01-01'
      AND "$path" = 's3://my-bucket/my-table/day=2019-01-01/my_file'
amazon-athena
1个回答
0
投票

不可以。不能让Athena只使用$path或我知道的任何其他方法来扫描你想要的文件,而不会以不同方式对表进行分区。

如果这是一个常见的操作,我建议让你的分区更小,并更好地匹配文件,但如果它只是你偶尔做的一件事,我不会太担心它。

如果您有多种访问模式,并且这不是主要的,但仍然不是罕见的模式,您可以使用org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat输入格式创建一个单独的表,并使用指向文件的symlink.txt文件创建1:1分区结构原表。你可以在this StackOverflow answer(下半部分)中阅读更多关于这种创建表的方法 - 但我认为这将是一种非常复杂的解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.