我有一个java Map(Map)和一个到hive服务器的JDBC连接。 服务器上表的模式包含Map类型的列。 是否可以使用JDBC将Java Map插入到具有类似数据类型的hive表列?
我试过了:
"create table test(key string, value Map<String, String>)"
"insert into table test values ('keywer', map('subkey', 'subvalue')) from dummy limit 1;"
参考:Hive inserting values to an array complex type column
但插入失败了:
"Error: Error while compiling statement: FAILED: ParseException line 1:69 missing EOF at 'from' near ')' (state=42000,code=40000)"
[编辑]
hive版本是:0.14.0
谢谢
答案 0 :(得分:1)
本手册明确指出您无法使用SQL插入Map数据类型:
“Hive不支持复杂类型(数组,映射,结构,联合)的文字,因此无法在INSERT INTO ... VALUES子句中使用它们。这意味着用户无法将数据插入复杂的使用INSERT INTO ... VALUES子句的数据类型列。“
答案 1 :(得分:0)
我认为正确的DDL和查询将是:
CREATE TABLE test(key STRING, value MAP<STRING, STRING>);
INSERT INTO TABLE test VALUES('keywer', map('subkey', 'subvalue')) from dummy limit 1;
答案 2 :(得分:0)
从jdbc客户端放置复杂类型的工作方法是:
insert into table test select "key",map("key1","value1","key2","value2") from dummy limit 1;
其中dummy是另一个至少有一行的表。