hive 数据写入

本文主要介绍了Hive表中数据的写入方式,包括insert into(overwrite) values、insert... select、load、create table as select... dataTable等。还阐述了创建、查看、使用和删除数据库,建表方式等内容。对比发现,使用load语句写入数据比insert语句快,因其不校验scheme,仅挪数据文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hive表中数据的写入主要有 insert  into(overwrite) values 、 insert ... select 、 load 、 create table as select ... dataTable 这几种方式。其中hive从0.14版本开始支持 insert into table values (line data)的形式。

创建/查看/使用/删除 数据库

建表的方式

从头建表和从已有表中建表

--  方式一 从头建表此表
drop table if exists zw;
-- 这个表示覆盖原来已有的这个表,直接删掉原有的zw了
create Table zw(user_id bigint, accounts string, change_type string, golds bigint, log_time int);

desc  zw;
-- 查看表的属性,会显示 表中的属性情况等

--  方式二 从已有的表中建表,同时将数据写入了新表中了。
drop table if exists zw;
create Table zw as 
select user_id as id, accounts as ac , change_type as type, golds as money, log_time as time 
from existTableAcc;

insert values

将数据直接通过insert 插入

insert into table zw values(3645356,'wds7654321(4171752)','新人注册奖励',1700,1526027152);

Insert into table zw select 

 insert into table zw select * from golds_log_tmp where id >=10;

从 已有数据的表golds中选取符合指定条件的数据插入之前存在的表zw 。

使用Load语句写入数据

create Table golds_log(user_id bigint, accounts string, change_type string, golds bigint, log_time int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'

上文代码中ROW FORMAT DELIMITED FIELDS TERMINATED BY '|',说明表的字段由符号“|”进行分隔。 而每条记录的默认是用 空格分割的。准备要导入的文件:golds_log.txt。

文件内容为:

3645356|wds7654321(4171752)|新人注册奖励|1700|1526027152 2016869|dqyx123456789(2376699)|参加一场比赛|1140|1526027152 3630468|dke3776611(4156064)|大转盘奖励|1200|1526027152 
将这个文件上传至linux的文件系统下,比如说 /root/tmp/golds_log.txt。然后执行下面的命令进行导入:

hive> Load data local inpath '/root/tmp/golds_log.txt' into table golds_log; Loading data to table test.golds_log OK Time taken: 0.657 seconds

因为golds_log.txt中包含有中文,确保文件格式是utf-8(GB2312导入后会有乱码)。

你会发现使用load语句写入数据比insert语句要快许多倍,因为HIVE并不对scheme进行校验,仅仅是将数据文件挪到HDFS系统上,也没有执行MapReduce作业。所以从导入数据的角度而言,使用load要优于使用insert...values。

附录:如何查看hive 版本: 直接在命令行中输入hive 启动是,会看到lib下的相应执行文件,就代表着版本。下图为0.13

鸣谢:

https://cloud.tencent.com/developer/article/1348633

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值