【发布时间】:2014-07-30 20:20:59
【问题描述】:
我想使用动态分区对我事先创建了架构的表进行分区。
我想要的分区键是源表中的一列。
那么,基本上我要实现的就是下面这个
插入覆盖表table_dest
从 table_source 中选择 col1,col2,col3
我想在这里使用的分区键是 col3。
另外,我可以在运行动态分区查询时更改分区列名吗?
此外,在运行运行动态分区的查询时需要考虑哪些事项,因为它会生成很多中间文件?
【问题讨论】:
标签: hive
我想使用动态分区对我事先创建了架构的表进行分区。
我想要的分区键是源表中的一列。
那么,基本上我要实现的就是下面这个
插入覆盖表table_dest
从 table_source 中选择 col1,col2,col3
我想在这里使用的分区键是 col3。
另外,我可以在运行动态分区查询时更改分区列名吗?
此外,在运行运行动态分区的查询时需要考虑哪些事项,因为它会生成很多中间文件?
【问题讨论】:
标签: hive
这样的东西会起作用, 仅当动态分区没有更高级别的静态分区时,才应将 dynamic.partition.mode 设置为非严格模式。
这里的分区列应该是选择列表中的最后一列。因此,选择列表将有 n+1 列,而目标表将有 n 列。
SET hive.exec.dynamic.partition.mode=nonstrict;
SET hive.exec.dynamic.partition = true;
INSERT OVERWRITE TABLE table_dest
partition(col3)
Select
col1
,col2
,col3
from source;
【讨论】: