java—如何将数据插入Hive2中的复杂数据类型“struct”

klh5stk1  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(318)

这是表格的结构

CREATE TABLE warehouse (
 time timestamp, 
 person struct<id : int, name: string, organization : string>, 
 activity struct<id : int, name: string>, 
 case struct<id : int, name: string, organization : string>
);

表的创建没有问题,问题是如何将数据插入到该表中。我试过这样的方法,但没用

INSERT INTO TABLE warehouse VALUES('2018-05-31'),
SELECT NAMED_STRUCT('id', 1, 'name', 'Alex', 'organization', 'CITI') AS person,
SELECT NAMED_STRUCT('id', 1, 'name', 'Buy') AS activity,
SELECT NAMED_STRUCT('id', 1, 'name', 'Gold', 'organization', 'London') AS case
FROM case

case、activity和person表已经存在,其结构如select中所示。

bvk5enib

bvk5enib1#

不能在带有值的insert语句中使用命名的\u结构(甚至不能使用带有值的任何UDF insert)。这是一个解决方案工作示例。

CREATE TABLE warehouse (
 time timestamp, 
 person struct<id : int, name: string, organization : string>, 
 activity struct<id : int, name: string>, 
 `case` struct<id : int, name: string, organization : string>
);

INSERT INTO TABLE warehouse
select 
'2018-05-31',
NAMED_STRUCT('id', 1, 'name', 'Alex', 'organization', 'CITI'),
NAMED_STRUCT('id', 1, 'name', 'Buy'),
NAMED_STRUCT('id', 1, 'name', 'Gold', 'organization', 'London') 
FROM (
select '1'
) t 
;

相关问题