Hive

Hive和数据库

Hive有自己的语言,叫HQL(近似于SQL),Hive是基于Hadoop的一个数据仓库,不是数据库.

1. 像mysql,oracle之类的数据库,他们更关注业务交易处理(OLTP),追求交易的速度,交易完整性,数据的一致性等。

2. 数据仓库更关注数据分析层面(OLAP),强调数据分析的效率,复杂查询的速度,数据之间的相关性分析,所以使用的多维模型,从而提高数据分析的效率。

3. Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的。而数据库则可以将数据保存在块设备或者本地文件系统中。

4. Hive必须要依赖一个数据库,因为Hive要做一个元数据到原来的映射,每一个原本的数据都需要存到数据库的,假如相对于的数据库被删了,那Hive就没了映射的源头了,就没法用


Hive的优点

1. 操作接口采用类SQL语法,提供快速开发的能力。

2. 避免了去写MapReduce,减少开发人员的效率和心灵上的创伤

3. Hive的执行延迟比较高,因此hive常用于数据分析,对实时性要求不高的场合

4. Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高

5. Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

Hive的缺点

1. 完全不会MR的话,无法处理性能的优化

2. MR太慢,太笨重...

3. Spark Core强于MR100倍...Spark SQL底层走的Spark Core,它可以对接Hive...

4. 不适合关系型处理,不适合实时查询和行情分析,延迟比较高

Hive的架构

Hive架构

Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。

1. 用户接口:Client            2. 元数据:Metastore            3.  驱动器:Driver


Hive解决了什么问题

Hive解决了大数据的查询功能,让不会写MR的人也能使用MR,它的本质就是将HQL转换为MR. 它的底层走的是MR,写MR效率低,而且痛苦,Hive的出现就为JAVAEE的兄弟带来了捷径和福音.


Hive环境搭建

Hive是MapReduce的客户端,因此不需要在每个节点上都配置。在操作Hive的同时,需要将Hadoop的HDFS开启,Yarn开启,MapReduce配置好。

1. hive官网下载hive后,将hive解压后,进入hive,将hive-env.sh.*修改为hive-env.sh.

2. 编辑hive-env.sh, 在里面找到JAVA-HOME,并配置安装在集群上java.home的路径

3. 找到export HIVE_CONF_DIR,在其后面配置hive下面的conf的路径

4. 在HDFS上创建/tmp和user/hive/warehouse两个目录,并改变他们的组的权限

5. 如果你想远程提供元数据表的服务,就在hive-site.xm配置hive.metastore属性


Hive的基本操作

注: 要操作Hive的话,要启动HDFS和Yarn

启动hive1: bin/hive

启动hive2: 如果在hive-site.xml里配置了hive.metastore,那启动:bin/hive --service metastore       再bin/hive

查看数据库: show databases;       切换数据库: use 数据库名       显示数据库中的表: show tables;  

创建表: create table employee(id int, name string);        查看表的结构: desc employee

向表中插入数据: insert into student values(1000,"ss");        查询表中数据: select * from student;

将本地文件导入hive: load data local inpath '/opt/module/datas/student.txt' into table employee;


MySQL的安装

hive为什么要依赖某一个数据库: 因为hive要做一个原本的数据到字段的映射,并且每一个原本的数据它所存储的信息和序列都要保存到数据库中进行说明,而原数据保存在mysql的数据库中,叫做metastore,一旦metastore被删掉了,hive仓库就没有数据了.

mysql在linux上要安装三个:客户端,服务器,还有一个连接的

前面两个默认安装好了...

1. 我安装的是这个版本mysql-connector-java-5.1.27  cd进入里面

2. 将里面默认提供的唯一的jar包cp到hive的lib目录下.

3. 启动hive,就可以创建表了,且数据映射到mysql里面了

4. mysql -uroot -p密码, 查看数据库,就可以看到metastore数据库了,如果不小心drop了,hive就没有数据了...GG


Hive之数据导入

基本加载数据

加载本地文件到hive: load data local inpath '/opt/module/datas/student.txt' into table default.student;

加载HDFS文件到hive中: dfs -put /opt/module/datas/student.txt /user/admin/hive;

通过查询语句向表中插入数据

插入数据: insert into table  student partition(month='123') values('1004','wangwu');

用location指定加载数据路径

上传数据到hdfs上: dfs -put /opt/module/datas/student.txt  /user/hive/warehouse/student5;

import数据到指定hive表中: import table student2 partition(month='201709') from '/user/hive/warehouse/export/student';


Hive之数据导出

insert导出到本地: insert overwrite local directory '/opt/module/datas/export/student' select * from student;

将查询的结果格式化导出到本地: insert overwrite local directory '/opt/module/datas/export/student1' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY '\n' select * from student;

将查询的结果导出到HDFS上(没有local): insert overwrite directory '/user/admin/hive/warehouse/student2'ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY '\n'select * from student;

Hadoop命令导出到本地: dfs -get /user/hive/warehouse/student/month=201709/000000_0  /opt/module/datas/export/student3.txt;

hive shell 命令导出: bin/hive -e 'select * from default.student;' > /opt/module/datas/export/student4.txt;

export导出到HDFS上: export table default.student to '/user/hive/warehouse/export/student';

待续..

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 1. Hive基本介绍和基础: Facebook公司最早完成并开源了hive框架,可以将sql语句直接翻译成Map...
    奉先阅读 3,322评论 0 43
  • * Hive框架基础(一) 一句话:学习Hive有毛用? 那么解释一下 毛用: * 操作接口采用类SQL语法,提供...
    Z尽际阅读 3,819评论 0 19
  • ![Uploading hive6_786401.png . . .]](http://upload-images...
    心_的方向阅读 1,866评论 1 2
  • Hive是什么 我们知道传统数据存储都是存储在关系型数据库中,它们使用一种SQL(结构化查询语言)方言来查询数据库...
    零度沸腾_yjz阅读 1,099评论 0 7
  • CDH Hadoop系列目录: Hadoop实战(3)_虚拟机搭建CDH的全分布模式 Hadoop实战(4)_Ha...
    padluo阅读 2,799评论 0 2