【发布时间】:2018-02-02 16:41:03
【问题描述】:
从 select 语句插入覆盖中的 Hive 动态分区不加载动态分区的数据,而是提供数据 HIVE_DEFAULT_PARTITION。
如果我说显示分区 table2;
它只给出一个分区细节,即HIVE_DEFAULT_PARTITION
我有一个暂存表,没有任何分区,可以从序列文件中读取数据。
CREATE EXTERNAL TABLE IF NOT EXISTS table1(DS 字符串,col1 字符串,col2 字符串,col3 字符串)
以“\t”结尾的行格式分隔字段
存储为序列文件
位置'/用户/'
tblproperties ("skip.header.line.count"="1");
来自文件的字段 DS 的日期格式为 m/d/yy。
然后我正在创建如下所示的生产表。
如果不存在则创建外部表 table2(col1 字符串,col2 字符串,col3 字符串)
分区依据(DS 字符串)
存储为序列文件
tblproperties ("skip.header.line.count"="1");
设置 hive.exec.dynamic.partition.mode=nonstrict;
然后插入查询如下
插入覆盖表 table2 分区 (DS) 选择 col1,col2,col3,演员(DS 作为日期) 从表 1;
当我查询表 2 时,我得到如下结果
d1 d2 d3 HIVE_DEFAULT_PARTITION d4 d5 d5 HIVE_DEFAULT_PARTITION
对于我期望分区列中的日期字段的最后一列,我得到 HIVE_DEFAULT_PARTITION
我的预期数据是这样的
d1 d2 d3 5/1/17 d4 d5 d5 5/1/17
有人可以帮忙吗?
【问题讨论】: