蜂巢:如何在数组<string>类型的列中插入数据

时间:2019-02-13 21:55:53

标签: arrays hive

具有具有以下架构的表:

CREATE TABLE `student_details`(
  `id_key` string, 
  `name` string, 
  `subjects` array<string>)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'path'

尝试在表中插入值时收到错误消息:

尝试:

INSERT INTO student_details  values ('AA87U','BRYAN',array('ENG','CAL_1','CAL_2','HST','MUS')); 

错误:

FAILED: SemanticException [Error 10293]: Unable to create temp file for insert values Expression of type TOK_FUNCTION not supported in insert/values 

这对我来说没有意义。尝试在线查找并找到了一个类似的网址:ExternalLink。该解决方案也没有任何意义。

请帮忙。

1 个答案:

答案 0 :(得分:2)

您不能直接在Hive中插入复杂类型。

您必须创建一个如下所示的虚拟表:

INSERT INTO student_details  select 'AA87U','BRYAN',array('ENG','CAL_1','CAL_2','HST','MUS')) from dummy ; 

对于Hive 2+,您可以在没有虚拟表的情况下运行。

INSERT INTO student_details select 'AA87U','BRYAN',array('ENG','CAL_1','CAL_2','HST','MUS'))