hadoop入门十五(Hive)
什么是Hive
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
使用的样例
存储的格式:缺省分隔符
等价的JSON形式
相应的SQL
可以重新定义 分隔符,中间建表格的代码是缺省的,我们可以写出来看一下。当然你可以把逗号当成分隔符,但是如果文本中含有逗号的话,程序就无法判断了。
DDL
- Date Defining Language
- 定义数据库
- 定义表
包括创建删除和修改,
对数据进行修改删除(DML)
创建和 列表数据库
default:系统的表的信息等等。
like:通配符 *
改变数据库的存放目录
comment:可以添加描述 数据有关的信息都可以显示出来
可以定义创建者是谁 创建日期等
数据库操作
hive> show databases ;//显示所有的数据库
hive> use XXX(数据库)//切换数据库名字
set hive.cli.print.current.db=true;//提示当前使用的是那个数据库的名字
hive > describe database default; //查看数据库信息
DROP DATEBASE IF EXISTS xxxxx(数据库)
hive (default)> set hive.cli.print.header=true; //Hive显示列头
hive> create database XXXX; //创建数据库命令
删除数据库的时候,不允许删除有数据的数据库,如果数据库里面有数据则会报错。如果要忽略这些内容,则在后面增加CASCADE关键字,则忽略报错,删除数据库。
hive> DROP DATABASE DbName CASCADE(可选);
hive> DROP DATABASE IF EXISTS DbName CASCADE;
hive (default)> drop table testtable;//删除表
表的操作
创建表 :
comment:注释
下面的comment是对整个表的注释
Location:数据库放置在哪里
like:复制表结构
hive> SHOW TABLES IN DbName; //查看当前DB有啥表
SHOW TABLES LIKE "h*";//使用模糊查询 通配符
hive (default)> show create table address1_2017_10_20;//获得表的建表语句
列的东西不在当前数据库:
show tables in XXDB;
观看表的描述:详细
describe entended xxdb.xxtable;
观看某个表中的列的描述:详细
describe entended xxdb.xxtable.列名;
更改表的位置
alter table xxx set location "xxxx/xxxx/xxx"
更改表的某个属性
alter table xxx set xx tblproperties("xxxx"="xxx")
列操作
导出数据
外部表
使得外部表可以被访问到,被别的分析系统经常处理。正在分析的数据也可以被别的系统进行分析。
分区表
Hive的分区按照分区关键字把表分到不同的区中,按照国家和州进行分区,分区关键字不需要在属性中出现。分区表的存储:会变成一个子目录里面的一系列文件,Stric模式及其对操作的影响。
分区关键字 体现在文件名中。设置为严格,要把分区条件写全,尽量利用分区条件查表。
列出分区
指定存储的格式
DML操作
Apache Hive DML 操作
Hive作为架构在hadoop之上sql到mapreduce的映射,并不是一个真正关系型,并不具备关系型数据库的行级别的操作,不支持删除修改插入的操作,唯一的更新的方法是数据批量载入。HDFS是个半只读的系统。可以理解。
Load date
本地的数据文件,批量装载
insert overwirte
将数据拿出来放到某个表中,使其成为一个分区。
- 上一篇: hive表信息查询:查看表结构、表操作等
- 下一篇: Hive的一些常识性技巧