gpt4 book ai didi

hadoop - 如何使配置单元仅将特定文件作为来自 hdfs 文件夹的输入

转载 作者:可可西里 更新时间:2023-11-01 14:18:16 24 4
gpt4 key购买 nike

我在hdfs中有如下文件夹结构

  /input/data/yyyy/mm/dd/

和里面的数据文件,例如:

/input/data/2013/05/01/
file_2013_05_01_01.json // file format yyyy_mm_dd_hh
file_2013_05_01_02.json // file format yyyy_mm_dd_hh
....

我已经为这个文件夹定义了配置单元外部表:

CREATE EXTERNAL TABLE input_data (
vr INT, ....
)
PARTITIONED BY (tsp STRING)
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
STORED AS TEXTFILE;

为每个文件夹添加一个分区,如下所示:

   alter table input_data ADD PARTITION (tsp="2013-05-01") LOCATION '/input/data/2013/05/01/';

以下查询将把日期为 2013-05-01 的所有文件作为输入

select ... from input_data where tps="2013-05-01"

如何只获取特定时间的文件?不更改 hdfs 结构以将每个小时放在单独的文件夹中?

最佳答案

您可以使用名为 INPUT__FILE__NAME 的虚拟列。它是 Hive 0.8.0 及更高版本提供的 2 个两个虚拟列之一,代表映射器任务的输入文件的名称。所以你可以这样做:

select ... from input_data 
where tps="2013-05-01"
and INPUT__FILE__NAME='file_2013_05_01_01.json';

HTH

关于hadoop - 如何使配置单元仅将特定文件作为来自 hdfs 文件夹的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16844758/

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