s3中没有斜杠的配置单元表位置

qmelpv7a  于 2021-06-25  发布在  Hive
关注(0)|答案(0)|浏览(269)

我有s3访问日志被转储到一个明显不友好的hive(glue data catalog)结构中的bucket中。基本上,给它们一个以斜杠结尾的前缀,然后每个文件名都以一个日期字符串开头,但它们并没有被分成下面的“子目录”(我知道s3不做目录,但很多事情都喜欢假装它做了,例如hive和s3 web控制台)。文件最终看起来是这样的:

s3://logs-bucket/some-prefix/2020-01-01-00-18-09-0D4ABDAC9C0DA971
s3://logs-bucket/some-prefix/2020-02-02-00-18-32-F4326DB4C0F61E87
s3://logs-bucket/some-prefix/2020-02-02-00-27-32-75841FC1705062CA
...

像这样的人有数百万。
我试图找出如何定义一个配置单元表或分区方案,根据日期分隔这些文件。否则,我必须扫描整个前缀,即使我知道我要寻找的数据是在文件名以给定日期开始。
我尝试在位置定义一个名为“s3\u logs\u 2020-02”的表 's3://logs-bucket/some-prefix/2020-02' . 我还尝试了一个以前缀为根的分区表,并且在'2020-02'分区中使用相同的位置。在这两种情况下都找不到数据,因为配置单元(glue?)似乎隐式地在位置字符串的末尾添加了一个“/”。
所以问题是,有没有办法告诉hive不要隐式地将尾部斜杠添加到s3位置?
edit:我考虑过的另一种方法是使用“$path”伪列向查询中添加where子句。这可以减少实际返回的结果,但我不清楚它是否会减少实际扫描的s3路径。有人知道吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题