hive命令8

1.将数据装载到表中
load data [local] inpath ‘filepath’ [overwrite] into table table_name;
(1)load data --向hive装载数据的关键字
(2)local --如果包含该关键字,则支持用户从其本地文件装载数据
如果省略该关键字,则从hadoop配置变量fs.default.name中设定的路径加载文件
(3)inpath ‘filrpath’ --如果使用local:file://user/hive/example (自己写的路径,随便写)
如果省略local:hdfs://namenode:9000/user/hive/example(这里举例区别不同)
(4)overwrite --如果包含,支持用户将数据装载到一个早已建好的表中并且替换原来的数据
如果省略,支持用户将数据装载到一个早已建好的表中并且将新数据追加到原来的数据后面
(5)into table table_name --tablename是hive中已经存在的表的名称
使用create table tablename语句

2.hive的建表语法
create [external] table table_name(
a int,
b string,
c string
)
partitioned by(非必选,创建分区表 dt string)
clustered by (userid) into 3000 buckets //非必选,分桶子
row format delimited fields terminated by ‘\t’ //必选,指定列之间的分隔符
stored as rcfile //非必选,指定文件的读取格式,默认textfile格式
location ‘/opt’; //非必选,指定文件在hdfs上的存储路径,如果已经有文件,会自动加载,
默认在hive的warehouse下

注意:还可以这样写
create [external] table table_name(
a int comment ‘姓名’,
b string comment ‘年龄’,
c string comment ‘班级’
)…

3.案例
创建一个新数据库
create database census;
使用该数据库
use census;
创建一个新表
create table person(
persid int,
lastname string,
firstname string
)
row format delimited fields terminated by ‘,’;
将数据从csv(逗号文件,以逗号分隔,excel也能打开)文件装载到该新表
load data local inpath ‘file:///root/hive/example/person001’ overwrite into table person;
查看表中是否有数据
select persid,lastname,firstname from person limit 10; //limit有助于观赏效果

4.使用查询装载数据
insert [overwrite]
table tablename [if not exists]
select select_fileds from from_statement;
语法解释:
(1)insert --将数据向hive装载数据的关键字
(2)overwrite --如果包含,支持用户将数据装载到一个早已建好的表中并且替换原来的数据
如果省略,支持用户将数据装载到一个早已建好的表中并且将新数据追加到原来的数据后面
(3)table tablename ----tablename是hive中已经存在的表的名称
使用create table tablename语句
(4)if not exists --如果在命令中包含if not exists,那么hive命令将在当前数据库中创建一个 表,如果省略,当该表不存在时将执行失败
(5)select --可以是针对hive生态系统的任何select命令

5.使用已有表创建新表,案例
使用已有数据库
use census;
创建新表
create table personhub(
persid int
);
将数据插入新表,覆盖表中已有数据
insert overwrite
table tablename
select Distinct personID from Person;
//SELECT DISTINCT 表示查询结果中,去掉了重复的行;Distinct表示去掉重复的行
检查数据是否已在表中(测试数据假设是80条)
select persid from personhub limit 10;

现在再次上传数据并测试去除overwrite参数后的执行情况
use census;
insert overwrite table personhub select distinct persid from Person;
查看是否所有数据都已经加载,而且没有删除之前的数据
select persid from personhub; //此时数据是80*2=160条

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值