我在hive中创建了一个包含动态分区的表,如下所示
create table sample(uuid String,date String,Name String,EmailID String,Comments String,CompanyName String,country String,url String,keyword String,source String) PARTITIONED BY (id String) Stored as parquet;
此外,我在hive shell中设置了以下内容
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions=100000000;
set hive.exec.max.dynamic.partitions.pernode=100000000;
set hive.exec.max.created.files = 100000000;
这是一个很好的做法,因为我为每个动态分区配置设置值为1亿,如上所示?
答案 0 :(得分:0)
动态分区是针对那些具有新分区值的表而设计的。如果你的表会受INSERT子句影响,那么如果你没有动态分区,你必须执行另一个查询来创建新的,或者你必须知道之前的值:
FROM page_view_stg pvs
INSERT OVERWRITE TABLE page_view PARTITION(dt='2008-06-08', country='US')
SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, null, null, pvs.ip WHERE pvs.country = 'US'
在official Hive tutorial中,您可以查看示例。
分区的最佳做法与存储的数据类型相关。例如: