大数据入门hive基本操作

大数据入门hive基础学习

1、创建数据库

create database mydb;

重点语句:

create database if no exists mydb;       
create database if no exists mydb location "/aa/bb";

在创建hive的库的时候,要注意:其实可以指定该数据库的数据存储目录在HDFS的那个目录

hive的底层数据/真实数据存储在hdfs上
hive的元数据/描述数据存储在mysql中

使用hive创建了一张表,这张表一定是属于一个数据库的,那么这张表当然也有自己的HDFS数据存储目录
创建表可以指定目录
创建库也可以指定目录

可以使用location的语法来指定创建库和创建表的时候的数据存储目录
使用频率很低

2、查询数据库

两个需求:
1、我想知道hive中到底有那些数据库?
2、我想知道某一个数据库的详细的信息?
3、这个数据库是怎么创建的呢

查询库列表:show databases;
查询库详细信息:desc database [extended] mydb;
查询建库的详细信息:show create database mydb;

关于location指定数据库和数据表的存储目录的问题:
规格:
hdfs_schema/hive的默认仓库路径/数据库.db/数据表/文件
hdfs://hadoop02:9000/user/hive/warehouse/myhive.db/student/student.txt

hdfs_schema		               hdfs://hadoop02:9000
hive的默认仓库路径	           /user/hive/warehouse/
数据库.db		               /myhive.db/
数据表			               /student/
数据文件		                   /student.txt

数据文件不一定是txt,可以任意格式的数据
1、普通文本文件
txt,csv,tsv 解析的时候记得指定行和列的分隔符

2、常见的行式,列式存储文件
parquet,rcfile,orcfile

3、企业常用
json

4、hadoop支持的数据格式
sequencefile

5、压缩文件
压缩普通文本文件

3、删除数据库

drop database mydb;

核心重点:

drop database if exists mydb; 	
drop database if exists mydb [restrict|cascade];

是否级联删除
1、默认是:restrict 严格模式,不级联删除
如果库中有表存在,也不删除该库
2、casecade
如果这个数据库中还有数据表存在,但是也一并删除

4、先进入我们要操作的数据库/切换库

use mydb;

5、查看数据库里面的表

show tables;
show tables in mydb;

6、添加表 / 创建表

表有四种表:
1、内部表
2、外部表
3、分区表
4、分桶表

关系:
1、一张表如果是内部表了,就不是外部表
一张表如果是外部表了,就不是内部表
2、如果一张表是内部表,但是同时也可以是分区表和分桶表

总结:
1、普通的内部表
2、普通的外部包
3、普通的分区表
4、普通的分桶表
5、分区的内部表
6、分区的外部表
7、分桶的内部表
8、分桶的外部表
9、既分区,又分桶的内部表
10、既分区,又分桶的外部表

创建内部表(Managered_Table)
create table mingxing_mng(id int, name string, sex string, age int,department string) row format delimited fields terminated by ','; 

show create table mingxing;

创建外部表(External_Table)

create external table mingxing_ext(id int, name string, sex string, age int, department string) row format delimited fields terminated by ',' location '/home/hadoop/hivedata';

注意:创建外部表的时候指定location的位置必须是目录,不能是单个文件

小总结:

1、创建内部表:

create table table_name ()

2、创建外部表:

create external table_name ()

怎么选择到底是创建内部表和外部表呢?
1、他们的区别
内部表删除的时候,会删除真实数据,和元数据
但是
外部表删除的时候,只会删除元数据,不会删除真实数据
2、如果现在有一份数据已经存在了HDSF上的某个目录,而且不是谁谁一个人在用
那么创建这个表的时候,要创建成外部表,而且创建表的时候要指定location

不管是内部表,还是外部表,数据都是存储在HDFS上的。不是在linux当中。

具体的案例:
1、创建内部表

create table mingxing(id int, name string, age int) row format delimited fields terminated by ",";

2、创建外部表
操作步骤:
先创建一个文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值