我的表格结构如下:
DF_filter <- DF %>%
inner_join((DF %>% group_by(ID) %>% summarise(Time=max(Time))),
by=c('ID'= 'ID', 'Time' = 'Time'))
现在,我想在向该表中插入数据时添加一个具有恒定值的新列,因此我在查询下面运行:
0: jdbc:hive2://vw118287.ds.dev.accenture.com> desc sample2;
Getting log thread is interrupted, since query is done!
+-------------+------------+----------+--+
| col_name | data_type | comment |
+-------------+------------+----------+--+
| event_text | string | |
| load_date | string | |
+-------------+------------+----------+--+
它抛出以下错误:
insert into table sample2 select event_text,'2019','Sample' as SampleColumn from ccs_service_optimization_9401.so_wireless_radius_summary ;
我读了SO帖子,说在Hive中这是不可能的,但我相信必须有某种或其他方式。有人对此有任何想法吗?
答案 0 :(得分:1)
在Hive中是不可能的。表DDL不是动态的,并且DML查询不会影响表的定义。
如果要添加列,请在插入之前执行alter table DDL。
ALTER TABLE tablename ADD columns SampleColumn string;
如果表是external,则可以删除并创建带有附加列的表,旧数据将保留,新列(如果最后一个列)将对旧数据为空;
答案 1 :(得分:0)
从Hive version > 2.0
开始,它支持在插入脚本中指定列名
insert into table sample2 (col_name, data_type, comment ) select event_text,'2019','Sample' as SampleColumn from ccs_service_optimization_9401.so_wireless_radius_summary;
如果表已分区,则不支持列规范,并且在插入过程中可能需要指定分区列。