【发布时间】:2020-06-03 11:37:16
【问题描述】:
我将数据存储在 S3 中,例如:
/bucket/date=20140701/file1
/bucket/date=20140701/file2
...
/bucket/date=20140701/fileN
/bucket/date=20140702/file1
/bucket/date=20140702/file2
...
/bucket/date=20140702/fileN
...
我的理解是,如果我通过 Hive 提取该数据,它会自动将 date 解释为一个分区。我的表创建如下:
CREATE EXTERNAL TABLE search_input(
col 1 STRING,
col 2 STRING,
...
)
PARTITIONED BY(date STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
LOCATION 's3n://bucket/';
但是 Hive 无法识别任何数据。我运行的任何查询都返回 0 个结果。如果我只是通过以下方式获取其中一个日期:
CREATE EXTERNAL TABLE search_input_20140701(
col 1 STRING,
col 2 STRING,
...
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
LOCATION 's3n://bucket/date=20140701';
我可以查询数据就好了。
为什么 Hive 不能识别带有“date=date_str”分区的嵌套目录? 有没有更好的方法让 Hive 对多个子目录运行查询并根据日期时间字符串对其进行切片?
【问题讨论】: