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。该解决方案也没有任何意义。
请提供任何帮助。
解决方案
您不能直接在 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');
推荐阅读
- python - Python多线程,线程突然停止
- javascript - 如何更改按日期和月份搜索的默认值
- spring - Spring Kafka 的事务管理与数据库/MQ 交互
- javascript - JS Canvas:标识符“Blob”已被声明
- python - 部署后 Django heroku 内部服务器错误
- sql - 值在 oracle DB 中被截断
- tomcat - 如何配置windows tomcat8.5.71不保存日志如“”-“400-”
- jasmine - 如何监视元素两次以覆盖 karma -jasmine 中的代码
- python - Python Selenium:从三个循环更改为一个循环重复相同的信息
- reactjs - 打字稿。如果 props 对未定义的属性发誓怎么办?反应