使用Hive CLI

时间:2015-07-27 13:54:01

标签: hadoop hive hiveql

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

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

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

请有人帮助我吗?

3 个答案:

答案 0 :(得分:1)

在Hive中创建表:

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

答案 1 :(得分:1)

通常外部表只是一个包装器,可以让Hive从平面文件中读取

如果您想数据加载到Hive表中(如在LOAD-INSERT或INSERT-SELECT中),您应该考虑托管表。它默认使用序列格式,但您可以选择Orc,Text,Avro等等。

如果要运行原子插入(如在INSERT-VALUES中),您需要Hive V0.14 +以及具有事务支持 =&gt;的托管表。需要Orc在背景中进行分组,定期压缩等等

如果您能够应对这一挑战,那么阅读文档可能会证明是有用的,例如: Inserting values into tables from SQLHive Transactions rationale

答案 2 :(得分:0)

正如@Samson Scharfrichter所提到的,可能无法对表格进行原子插入数组结构。我决定将我的表移动到hbase,以支持在写入时添加列的灵活性。感谢所有的建议和指导。