gpt4 book ai didi

hadoop - 将配置单元分区映射到某个位置

转载 作者:行者123 更新时间:2023-12-02 21:44:37 25 4
gpt4 key购买 nike

我有一个配置单元外部表,按年,月,日和小时进行分区。

PARTITIONED BY ( 
`year` int,
`month` int,
`day` int,
`hour` int)
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.SequenceFileInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat'
LOCATION
'hdfs://path/to/data'

数据存在于以下目录中

2014/05/10/07/00

2014/05/10/07/01

...

2014/05/10/07/22

2014/05/10/07/23

当我使用以下方法选择数据时,我得到结果:
Select * from my_table where year=2014 and month="05" and day="07" and hour="03"

但我希望能够以引号查询从零开始的值。当前,以下两个示例不起作用:
Select * from my_table where year=2014 and month=05 and day=07 and hour=03
Select * from my_table where year=2014 and month=5 and day=7 and hour=3

我该如何支持? (而不是更改目录,使其在单个数字值上没有零前缀)。

谢谢,

盖伊

最佳答案

在我回答问题之前,这确实涉及更改目录名称,但这确实会使查询变得简单。

我们的分区具有类似的结构,但是使用 2014/201405/20140510/07 / 20140510.22 来代替名称是 2014/05/10/07/22 。基本上,分区是:

 PARTITIONED BY 
(
years bigint,
months bigint,
days bigint,
hours float
)

现在有了使用它的优点:

问题中提到的查询:
Select * from my_table where year=2014 and month=05 and day=07 and hour=03

新分区之后
Select * from my_table where hour = 20140507.03

另外,无需明确指定月份和年份,就可以直接运行几天和几个月的其他查询。

关于hadoop - 将配置单元分区映射到某个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26450900/

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