使用 Hive CLI 处理 Hive 复杂数据类型

Hive complex data types using Hive CLI

我是 HadoopBig Data 的新手。我有 Hive 版本 Hive 1.1.0-cdh5.4.0 .现在面临在 HIVE table 中创建复杂数据类型的一些基本问题。我有一个客户 table,创建为:

create external table if not exists  customer_details1 (customerId string, mobileNumber string, address ARRAY <STRUCT<houseNo:string,street1:string>>);

我想 push data 使用 INSERT statements 进入这个 table。有人可以告诉我如何使用 command prompt 将虚拟记录推入此 table 吗? 我不想使用外部文件(加载数据)将数据推送到其中。

有人能帮帮我吗?

正在 Hive 中创建 table:

create table if not exists mytable1 (id int, name string, address array<struct<street : string, town : string>>) comment 'my practice table' ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

我认为 Hive 目前不支持简单的插入查询。

Check this link

通常 external table 只是一个包装器,使 Hive 能够从平面文件中 读取

如果你想加载 数据到 Hive table(如 LOAD-INSERT 或 INSERT-SELECT),你应该考虑 管理 table。它默认使用 Sequence 格式,但您可以选择 Orc、Text、Avro 等格式。

如果你想运行 原子插入(如INSERT-VALUES)你需要Hive V0.14+加上一个托管table 事务支持 =>需要Orc在后台进行分桶、周期性压缩等

如果您能迎接挑战,阅读文档可能会很有用,例如Inserting values into tables from SQL and Hive Transactions rationale

正如@Samson Scharfrichter 所提到的,数组结构的原子插入可能无法配置到表中。而且我已经决定将我的表移动到 hbase 以支持在写入时添加列的灵活性。感谢所有的建议和指南。