hive |在日期上创建分区

t9aqgxwy  于 2021-06-24  发布在  Hive
关注(0)|答案(2)|浏览(500)

我需要在csv文件上创建一个外部配置单元表。csv有col1、col2、col3和col4。
但是我的外部配置单元表应该在月份进行分区,但是我的csv文件没有任何月份字段。col1是日期字段。我该怎么做?

dwbf0jvd

dwbf0jvd1#

您需要将数据重新加载到分区表中。
使用csv在文件夹顶部创建非分区表(mytable)。
创建分区表(mytable\u part) create table mytable_part( --columns specification here for col1, col2, col3, col4 ) partitioned by (part_month string) ... stored as textfile --you can chose any format you need 使用动态分区将数据加载到分区表中,在查询中计算分区列:
设置hive.exec.dynamic.partition=true;设置hive.exec.dynamic.partition.mode=nonstrict; insert overwrite table mytable_part partition (part_month) select col1, col2, col3, col4, substr(col1, 1, 7) as part_month --partition column in yyyy-MM format from mytable distribute by substr(col1, 1, 7) --to reduce the number of files ;

wvyml7n5

wvyml7n52#

这样试试
将csv数据复制到hdfs位置的文件夹中hdfs://somepath/5 并将该路径作为分区添加到外部表中。

create external table ext1(
    col1   string
    ,col2  string
    ,col3  string
    ,col4  string
)
partition by (mm int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS ORC;

alter table ext1 add partition(mm = 5) location 'hdfs://yourpath/5';

相关问题