我是靠谱客的博主 直率星月,最近开发中收集的这篇文章主要介绍hive的使用(实战),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

hive的使用

    • 简单操作
    • 修改表
    • 修改列名
    • 添加新列,和替换列
    • 导入导出
    • 导入导出表:
    • 导入导出数据:
    • 创建表
    • truncate、delete和drop的区别
    • 创建类型复杂表(案例)
    • 创建分区表
    • 单分区
    • 多个分区:

简单操作

在mysql中可以,在hive中不可以

show databases like '%da%'

删除数据库

drop database database_name;

修改数据库属性

alter database my_2 set location 'hdfs://jh/mr/my_2'; 

查看我在哪个数据库

select current_database() ;

创建表–简单的

create table psn_2 
(
id int comment '这是id',
name string comment '这是名字',
age tinyint , 
score double , 
createTime timestamp
)
comment '这是表的注释';
# 查看所有表
show tables;
# 查看单张表
desc psn_1 ;
# 查看表结构
desc formatted psn_1 ;

修改表

修改表名

alter table psn_1 rename to psn_11 ;

修改列名

修改表的列

alter table psn_11 change age age_1 int ; 

添加新列,和替换列

alter table psn_11 add columns 
(
sex smallint, 
updateTime timestamp 
);

删除表

drop table psn_11 ;

导入导出

Hive需要往hdfs中写数据;最好先关闭hadoop
进入node1中

cd /data/hadoop/hadoop/etc/hadoop/

配置hadoop,core-site.xml(追加内容,要注意格式哦)

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

然后分发给其他机器

scp core-site.xml node2:`pwd`
...node3...
...node4...

然后启动hadoop,执行如下命令

导入导出表:

导出hive中的表到hdfs

export table psn_1 to '/hw/psn_1' ; 

删除hive中的表psn_1

drop table psn_1;

再从hdfs上导入

import table psn_1 from '/hw/psn_1' ;

导入导出数据:

导入数据:
hdfs导入的数据文件会被挪走(不复存在),

load data inpath '/hw/data.txt' into table psn_4 ; 

内部表把hdfs上的文件夹也给删除了;而外部表不会删除hdfs上的

drop table psn_4 ; 

如果表的格式为textFile,直接将txt上传到表指定的目录中,就可以直接查询出来;

创建表

创建表(并指定创建hdfs存储位置)
– 建议将最后一级目录的名字和表名一样;最好是空目录,否则会把文件夹下面的所有内容删除;可选,可不选
like 创建一个和某个表结构一样的表(不包含数据)

create table psn_8 
like psn_1 
location '/mr/psn_8'; 

as
创建一张表,是根据sql语句来的;
创建表的类型默认是内部表;
创建的表的格式默认是textFilie;
创建表中的列类型和sql语句查询出来的类型是一样一样的;

create table psn_7 
as select id,name,age from psn_6 ; 

truncate、delete和drop的区别

truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);

当你不再需要该表时, 用 drop;
当你仍要保留该表,但要删除所有记录时, 用 truncate;
当你要删除部分记录时(always with a WHERE clause), 用 delete

创建类型复杂表(案例)

create table psn_9 
(
id int , 
name string,
age smallint,
scroe double,
-- 地址;容器,泛型
address array<string>,
-- map爱好;容器,泛型
hobby map<string,string>,
createTime string
)
-- 记录行的分隔符
row format delimited
-- 列的分隔符
fields terminated by ',' 
-- 数组的拆分
collection items terminated by '-'
-- map
map keys terminated by ':'
-- 存储文件的格式;textfile是默认的,写与不写都是一样的
stored as textfile ; 

数组的拆分和map的拆分,并木有指定是哪一列,是所有的数组都是用-拆分,所有的map都是用:拆分
Map:键值对,使用:隔开,多个键值对使用集合-
准备一个数据文件;(multi_data.txt)

1,aa,20,80,北京-郑州-上海,音乐:王杰-运动:wegame-学习:码代码,2019-01-17 15:45:00
2,bb,21,90,郑州-上海,音乐:梁家辉-运动:篮球-学习:玩游戏,2019-01-17 15:45:00
3,cc,24,70,荥阳-上街,音乐:王杰-运动:wegame-学习:码代码,2019-01-18 15:45:00
4,dd,20,82,,音乐:轻音乐-运动:驱车-学习:大数据,2019-01-10 15:45:00
5,ee,22,81,,,2019-01-20 15:45:00
6,测试,29,80,郑州-荥阳,音乐:王杰-运动:wegame-学习:码代码,2019-01-11 15:45:00

表的默认格式是textFile,也不用使用load_data命令,直接将数据的文件上传到表的目录下面;
查询数组中的内容和map中的内容;

select id,address[1],hobby['音乐'] from psn_9 ; 

创建分区表

单分区

在这里插入图片描述

create table psn_10
(
id int , 
name string,
age smallint,
scroe double,
-- 地址;容器,泛型
address array<string>,
-- map爱好;容器,泛型
hobby map<string,string>,
createTime string
)
-- 分区,分区的规则,指定列进行分区,分区的列不允许出现在小括号中;(分区可以有多个)
partitioned by (sex string)
-- 记录行的分隔符
row format delimited
-- 列的分隔符
fields terminated by ',' 
-- 数组的拆分
collection items terminated by '-'
-- map
map keys terminated by ':'
-- 存储文件的格式;textfile是默认的,写与不写都是一样的
stored as textfile ; 

数据文件multi_data.txt

1,aa,20,80,北京-郑州-上海,音乐:王杰-运动:wegame-学习:码代码,2019-01-17 15:45:00
2,bb,21,90,郑州-上海,音乐:梁家辉-运动:篮球-学习:玩游戏,2019-01-17 15:45:00
3,cc,24,70,荥阳-上街,音乐:王杰-运动:wegame-学习:码代码,2019-01-18 15:45:00
4,dd,20,82,,音乐:轻音乐-运动:驱车-学习:大数据,2019-01-10 15:45:00
5,ee,22,81,,,2019-01-20 15:45:00
6,测试,29,80,郑州-荥阳,音乐:王杰-运动:wegame-学习:码代码,2019-01-11 15:45:00

导入数据

在这里插入图片描述

load data inpath '/hw/multi_data.txt' into table psn_10 partition (sex='boy');

分区在上hdfs上就是一个目录,不能手动在hdfs上直接创建;

多个分区:

在这里插入图片描述

最后

以上就是直率星月为你收集整理的hive的使用(实战)的全部内容,希望文章能够帮你解决hive的使用(实战)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部