Hive分区表每月从每日时间戳开始?

时间:2017-08-18 10:44:35

标签: hadoop hive

是否可以从01开始创建2017-01-02'这样的分区,其中01是月? 我有每日销售记录,我需要像select * from sales where month = '01'那样进行查询。因此,如果我能按月对每日销售进行分区,那将会更好。但我的数据的格式为2017-01-01并且正在执行 create table tl (columns ......) partitioned by (date <datatype> )将每天创建分区,这是我想要的最后一件事。 我需要动态创建分区。

1 个答案:

答案 0 :(得分:3)

注意: - 您需要在create语句中转义日期列(通过使用`即在列名称后面反引号)。因为date是hive中的数据类型。

您可以动态创建分区: - 通过在查询中设置以下参数。

set hive.exec.dynamic.partition.mode=nonstrict;

除此之外,您还需要从源表中仅选择月份部分: -

insert into table sales partition(date) select columns...,SUBSTR(date,5,2) from source_table

此insert语句将创建分区。

  

显示分区销售

date=01 date=02 date=03 date=04