Hive简介与SQL操作

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

Hive部署

1.上传tar包
2.解压
tar -zxvf hive-1.2.1.tar.gz
3.安装mysql数据库
推荐yum 在线安装(运行脚本安装)
4.配置hive
(a)配置HIVE_HOME环境变量
vi conf/hive-env.sh
配置其中的$hadoop_home
(b)配置元数据库信息

vi  hive-site.xml 
		添加如下内容:
		<configuration>
		<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
		<description>JDBC connect string for a JDBC metastore</description>
		</property>

		<property>
		<name>javax.jdo.option.ConnectionDriverName</name>
		<value>com.mysql.jdbc.Driver</value>
		<description>Driver class name for a JDBC metastore</description>
		</property>

		<property>
		<name>javax.jdo.option.ConnectionUserName</name>
		<value>root</value>
		<description>username to use against metastore database</description>
		</property>

		<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>root</value>
		<description>password to use against metastore database</description>
		</property>
		</configuration>

5.安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql -uroot -p

设置密码
set password=password('root');

#(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

FLUSH PRIVILEGES;

通过mysql -uroot -proot
  1. Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的
    6.1、 cp hive/lib/jline-2.12.jar /opt/software/hadoop-2.6.4/share/hadoop/yarn/lib/
    6.2、装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下

Hive的产生:

非java编程者对hdfs的数据做mapreduce操作.
Hive只是一个工具, 一个用来构建数据仓库的工具. Hive底层还是基于HDFS和MapReduce来实现功能的.

Hive 简介

Hive : 数据仓库。
Hive:解释器,编译器,优化器等。
Hive 运行时,元数据存储在关系型数据库里面。

Hive 处理流程

在这里插入图片描述

Hive架构

在这里插入图片描述
Hive的架构
(1)用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 WUI是通过浏览器访问Hive。
(2)Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
(3)解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。
(4)Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(包含*的查询,比如select * from tbl不会生成MapRedcue任

编译器将一个Hive SQL转换操作符
操作符是Hive的最小的处理单元
每个操作符代表HDFS的一个操作或者一道MapReduce作业

2.数据库的链接
(1)直接进数据库
(2)外部方式–navicat
2.1外部连接方式
CLI
web
jdbc
3.hive的元数据存放位置
3.1derby —hive内部的数据库 不能多用户同时访问
3.2本地
3.3存放在外部数据库 (安全)

HiveSQL

1.数据库的创建
数据库创建的就是内部的表格
(1)内部表

CREATE  TABLE [IF NOT EXISTS] table_name
	删除表时,元数据与数据都会被删除

(2)外部表

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name LOCATION 				hdfs_path
	删除外部表只删除metastore的元数据,不删除hdfs中的表数据

(3)分区表
(4)分桶表
2.Hive 建表
CREATE TABLE person(
id INT,
name STRING,
age INT,
likes ARRAY,
address MAP<STRING,STRING>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘,’
COLLECTION ITEMS TERMINATED BY ‘-’
MAP KEYS TERMINATED BY ‘:’
LINES TERMINATED BY ‘\n’;
3. Hive 查看表描述
DESCRIBE [EXTENDED|FORMATTED] table_name

猜你喜欢

转载自blog.csdn.net/power_k/article/details/92848221