Hive将值插入到数组复杂类型列中

时间:2015-05-25 22:04:51

标签: hadoop jdbc hive

我无法使用insert into语句将数据附加到包含数组列的表中;数据类型是数组< varchar(200)>

使用jodbc我无法通过以下值将值插入数组列:

INSERT INTO demo.table (codes) VALUES (['a','b']);

无法识别“[”或“{”符号。

使用类似...的数组函数

INSERT INTO demo.table (codes) VALUES (array('a','b'));

我使用数组函数得到以下错误:

Unable to create temp file for insert values Expression of type TOK_FUNCTION not supported in insert/values

尝试了解决方法......

INSERT into demo.table (codes) select array('a','b');

不成功:

Failed to recognize predicate '<EOF>'. Failed rule: 'regularBody' in statement

如何使用jdbc将数组数据加载到列中?

3 个答案:

答案 0 :(得分:5)

我的表格有两列:a STRING, b ARRAY<STRING>

当我使用@Kishore Kumar Suthar的方法时,我得到了这个:

FAILED: ParseException line 1:33 cannot recognize input near '(' 'a' ',' in statement

但我找到另一种方式,它对我有用:

INSERT INTO test.table 
SELECT "test1", ARRAY("123", "456", "789") 
FROM dummy LIMIT 1;

dummy是任何至少有一行的表。

答案 1 :(得分:2)

制作一个dummy表格,其中包含至少one row

INSERT INTO demo.table (codes) VALUES (array('a','b')) from dummy limit 1;

hive> select codes demo.table;
OK
["a","b"]
Time taken: 0.088 seconds, Fetched: 1 row(s)

答案 2 :(得分:0)

假设我有一个表职员,其中包含字段 ID Name

我用字段 ID Address 创建另一个表employee_address。地址是 array(string)类型的复杂数据。

这是我可以在其中插入值的方法:

insert into table employee_address select 1, 'Mark', 'Evans', ARRAY('NewYork','11th 
avenue') from employee limit 1;

在此,表员工只是充当虚拟表。没有数据从中复制。其架构可能与employee_address不匹配。没关系。