牛骨文教育服务平台(让学习变的简单)
博文笔记

hadoop入门十五(Hive)

创建时间:2017-10-20 投稿人: 浏览次数:336

什么是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

这里写图片描述

将数据拿出来放到某个表中,使其成为一个分区。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。