大数据笔记(十五)——Hive的体系结构与安装配置、数据模型
一.常见的数据分析引擎
- Hive:Hive是一个翻译器,一个基于Hadoop之上的数据仓库,把SQL语句翻译成一个 MapReduce程序。可以看成是Hive到MapReduce的映射器。
Hive HDFS
表 目录
数据 文件
分区 目2
2.Pig
3.Impala
4.Spark SQL
二.Hive 的体系结构
用户接口主要有三个:
1.CLI Shell命令行
2.JDBC/ODBC:Hive的Java,与传统JDBC相似
3.Web管理界面

三.Hive的安装和配置
1、安装模式:嵌入模式 ----> 需要Hive自带的一个关系型数据库:Derby
本地模式、远程模式 ----> 需要MySQL数据库的支持
tar -zxvf apache-hive-2.3.0-bin.tar.gz -C ~/training/
环境变量:vi ~/.bash_profile
HIVE_HOME=/root/training/apache-hive-2.3.0-bin export HIVE_HOME PATH=$HIVE_HOME/bin:$PATH export PATH
2、嵌入模式
(1)使用Hive自带的Derby数据库来存储元信息
(2)Hive只支持一个连接
创建 conf/hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:derby:;databaseName=metastore_db;create=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>org.apache.derby.jdbc.EmbeddedDriver</value> </property> <property> <name>hive.metastore.local</name> <value>true</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>file:///root/training/apache-hive-2.3.0-bin/warehouse</value> </property> </configuration>
初始化MetaStore:
schematool -dbType derby -initSchema
日志:
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
3.远程模式:MySQL
(1)配置MySQL的数据库:http://www.mysqlfront.de/
(2)配置hive-site.xml: JDBC的参数
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?useSSL=false</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hiveowner</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>Welcome_1</value> </property> </configuration>
(3)把MySQL数据库的驱动放到: Hive/lib下
(4)初始化MySQL数据库
老版本的Hive:第一次运行Hive
新版本的hive:schematool -dbType mysql -initSchema
四. Hive的数据模型
- 内部表:相当于MySQL(Oracle)中表,将数据保存到Hive自己的数据仓库的 目录中: /usr/hive/warehouse
建表:
create table emp (empno int, ename string, job string, mgr int, hiredate string, sal int, comm int, deptno int );
创建表,并且指定分隔符
create table emp1 (empno int, ename string, job string, mgr int, hiredate string, sal int, comm int, deptno int )row format delimited fields terminated by ',';
导入数据:load相当于ctrl+X
load data inpath '/scott/emp.csv' into table emp; ----> 导入HDFS
load data local inpath '/root/temp/***' into table emp; ----> 导入本地文件
创建部门表,保存部门数据
create table dept (deptno int, dname string, loc string )row format delimited fields terminated by ','; load data inpath '/scott/dept.csv' into table dept;
2.分区表:提高查询的效率----> 查看SQL的执行计划
分区 ----> 目录
(*)根据员工的部门号建立分区
create table emp_part (empno int, ename string, job string, mgr int, hiredate string, sal int, comm int )partitioned by (deptno int) row format delimited fields terminated by ',';
往分区表中导入数据:指明分区
insert into table emp_part partition(deptno=10) select empno,ename,job,mgr,hiredate,sal,comm from emp1 where deptno=10; insert into table emp_part partition(deptno=20) select empno,ename,job,mgr,hiredate,sal,comm from emp1 where deptno=20; insert into table emp_part partition(deptno=30) select empno,ename,job,mgr,hiredate,sal,comm from emp1 where deptno=30
3.外部表 external table 相对于内部表
(*)实验的数据
[root@bigdata11 ~]# hdfs dfs -cat /students/student01.txt
1,Tom,23
2,Mary,24
[root@bigdata11 ~]# hdfs dfs -cat /students/student02.txt
3,Mike,26
(*)定义:(1)表结构 (2)指向的路径
create external table students_ext (sid int,sname string,age int) row format delimited fields terminated by ',' location '/students';
4、桶表:本质也是一种分区表,类似Hash分区
桶 ----> 文件
创建一个桶表,按照员工的职位job分桶
create table emp_bucket (empno int, ename string, job string, mgr int, hiredate string, sal int, comm int, deptno int )clustered by (job) into 4 buckets row format delimited fields terminated by ',';
使用桶表,需要打开一个开关
set hive.enforce.bucketing=true;
使用子查询插入数据
insert into emp_bucket select * from emp1;
5、视图:view
(*)视图是一个虚表,虚:视图是不存数据的
(*)优点:简化复杂的查询
(*)举例:查询部门名称、员工的姓名
create view myview as select dept.dname,emp1.ename from emp1,dept where emp1.deptno=dept.deptno; select * from myview;
6、Hive的查询
(1)查询所有的员工信息
select * from emp1;
(2)查询员工信息:员工号 姓名 薪水
select empno,ename,sal from emp1;
(3)多表查询:查询部门名称、员工的姓名
select dept.dname,emp1.ename
from emp1,dept
where emp1.deptno=dept.deptno;
(4)子查询:hive只支持:from和where后面的子查询
(5)内置函数:select max(sal) from emp1;
(6)n条件函数 就是一个if else: 做一个报表:涨工资,总裁1000 经理800 其他400
select empno,ename,job,sal,
case job when 'PRESIDENT' then sal+1000
when 'MANAGER' then sal+800
else sal+400
end
from emp1;
select empno,ename,job,sal,
case job when 'PRESIDENT' then sal+1000
when 'MANAGER' then sal+800
else sal+400
end
from emp;
大数据笔记(十五)——Hive的体系结构与安装配置、数据模型的更多相关文章
- 分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例【转】
Kylin 麒麟官网:http://kylin.apache.org/cn/download/ 关键字:olap.Kylin Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的 ...
- 大数据笔记(五)——HDFS的高级特性
一.HDFS的回收站: recyclebin 1.HDFS的回收站默认是关闭的 2.启用回收站:去core-site.xml配置 路径:/root/training/hadoop-2.7.3/etc/ ...
- 大数据笔记(三)——Hadoop2.0的安装与配置
一.Hadoop安装部署的预备条件 准备:1.安装Linux和JDK. 安装JDK 解压:tar -zxvf jdk-8u144-linux-x64.tar.gz -C ~/training/ 设置环 ...
- 跟上节奏 大数据时代十大必备IT技能
跟上节奏 大数据时代十大必备IT技能 新的想法诞生新的技术,从而造出许多新词,云计算.大数据.BYOD.社交媒体……在互联网时代,各种新词层出不穷,让人应接不暇.这些新的技术,这些新兴应用和对应的IT ...
- 大数据工具篇之Hive与MySQL整合完整教程
大数据工具篇之Hive与MySQL整合完整教程 一.引言 Hive元数据存储可以放到RDBMS数据库中,本文以Hive与MySQL数据库的整合为目标,详细说明Hive与MySQL的整合方法. 二.安装 ...
- 大数据工具篇之Hive与HBase整合完整教程
大数据工具篇之Hive与HBase整合完整教程 一.引言 最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方 ...
- CentOS6安装各种大数据软件 第五章:Kafka集群的配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- 大数据系列之数据仓库Hive安装
Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...
- 大数据系列之数据仓库Hive命令使用及JDBC连接
Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...
随机推荐
- 第十三周学习总结 Java的异常
java的核心思想 面向对象的编程思想 类和类的关系 类中成员的描述 对象创建 Java工具类 包装类 数学相关 日期相关 字符串相关 集合相关的类 考试机 学生 老师 --------------- ...
- 解决Jackson2反序列化LocalDateTime报错
今天在整合redis和spring boot的时候,遇到了一个错误,记录一下. 报错如下: Could not read JSON: Cannot construct instance of `jav ...
- net 架构师-数据库-sql server-002-工具
本章讲述的工具包括: SQL Server 联机丛书 SQL Server配置管理器 SQL Server Management Studio SQL Server Business Intellig ...
- c++ 判断两圆位置关系
对于两圆的位置一般有五种关系: (1) 外离:两圆的半径之和小于两圆圆心距离 (2) 外切:两圆的半径之和等于两圆圆心距离 (3) 相交:两圆的半径之和大于两圆圆心距离,两圆圆心距离大于两圆半径之差 ...
- QT linux下显示中文的问题
如果中文显示为乱码,那么是字符集不对. 应该设置字符集: QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK") ...
- Python 入门之 Python三大器 之 迭代器
Python 入门之 Python三大器 之 迭代器 1.迭代器 (1)可迭代对象: <1> 只要具有__ iter __()方法就是一个可迭代对象 (我们可以通过dir()方法去判断一个 ...
- React事件绑定的几种方式对比
React事件绑定 由于类的方法默认不会绑定this,因此在调用的时候如果忘记绑定,this的值将会是undefined.通常如果不是直接调用,应该为方法绑定this.绑定方式有以下几种: 1. 在构 ...
- P3190 [HNOI2007]神奇游乐园
传送门 第一道插头 $dp$ 由于讲不清楚所以假装各位早就会插头 $dp$ 了 首先要的是一个闭合回路,所以可以用括号表示法表示状态,然后大力分类讨论 $1.$ 没有右插头和下插头 那么我们可以啥也不 ...
- 权限控制(vue)
权限控制(vue) 经常会遇到,角色权限控制问题,若是页面控制,倒好说,可如果是当前页面部分可见不可见,这就有些麻烦,如果加上条件就更加苛刻.之前只是简单的v-if进行控制,如今想试试指令(网上一直有 ...
- windows和linux安装rabbitmq
一.windows安装rabbitmq 1.安装erlang 点击进入官网下载:http://erlang.org/download/ 2.安装rabbitmq 点击进入官网下载:http://www ...