gpt4 book ai didi

hive - 按日期范围读取 Hive 表中的多个文件

转载 作者:行者123 更新时间:2023-12-01 03:29:52 24 4
gpt4 key购买 nike

假设我每天以一种格式存储一个文件:

/path/to/files/2016/07/31.csv
/path/to/files/2016/08/01.csv
/path/to/files/2016/08/02.csv

如何读取给定日期范围(例如从 2016-06-04 到 2016-08-03)的单个 Hive 表中的文件?

最佳答案

假设每个文件都遵循相同的架构,那么我建议您使用以下命名约定存储文件:

/path/to/files/dt=2016-07-31/data.csv
/path/to/files/dt=2016-08-01/data.csv
/path/to/files/dt=2016-08-02/data.csv

然后你可以创建一个由 dt 分区的外部表。并指向位置 /path/to/files/
CREATE EXTERNAL TABLE yourtable(id int, value int)
PARTITIONED BY (dt string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/path/to/files/'

如果你有几个分区又不想写 alter table yourtable add partition ...对于每个查询,您只需使用修复命令即可自动添加分区。
msck repair table yourtable

然后,您可以通过指定分区范围来简单地选择日期范围内的数据
SELECT * FROM yourtable WHERE dt BETWEEN '2016-06-04' and '2016-08-03'

关于hive - 按日期范围读取 Hive 表中的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38762771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com