Hive 架构
1. 用户接口:Client
CLI(hive shell) JDBC(java 拜访 hive) WEBUI(浏览器拜访 hive)
2. 元数据(Metastore)- 数据库
元数据包含:表名称、表所属的数据库、表的拥有者、列 / 分区字段名、表的类型(内部 / 外部)、表的数据所在的目录
默认存储在自带的 derby 的数据库中,推大数据培训荐应用 Mysql 来存储元数据
3.hadoop
hive 应用 HDFS 进行数据的存储,应用 MR 进行数据的计算
4. 驱动器:driver
蕴含:解析器 -> 优化器 -> 编译器 -> 执行器
Hive 的长处和应用场景
1. 简略易用(操作接口采纳类 SQL 语法,提供疾速开发的能力)
2. 防止咱们去写 MR,缩小开发人员的学习老本
3. 对立的元数据管理,可与 impala、spark 等共享数据
4. 易扩大
5. 数据的离线解决:比方日志剖析,海量结构化数据离线剖析
6.Hive 的执行提早比拟高,因而 Hive 罕用于数据离线剖析,适宜实时性要求不高的场景
7.Hive 劣势在于解决大数据,对于解决小数据没有劣势,因为 hive 的执行提早性很高。
Hive 罕用的命令
1.show databases; // 查看数据库
2.create database db_hive; // 创立数据库
3.drop database db_hive; // 删除数据库(数据库内无表)
4.use db_hive; // 应用数据库
5. 创立表:
CREATE TABLE u_data (
userid INT,
movieid INT,
rating STRING,
unixtime STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘,’
STORED AS TEXTFILE; //textfile 文本,以“,”为分隔符
6.load data local inpath ‘/opt/datas/ratings.txt’ into table u_data; // 加载本地数据到表中
7.select * from u_data; // 查问表
8.select userid from u_data; // 字段查问
9.select count(1) u_count from u_data; // 统计行数,进行 mr 计算
10.desc u_data; // 形容表信息
11.desc extended u_data; // 形容表具体信息(无序)
12.desc formatted u_data; // 形容具体信息(有序)
13.show functions; // 查看 hive 自带所有函数
14.desc function upper; // 查看 upper 函数的阐明
15.desc function extended uppper; // 查看 upper 函数的具体阐明
16.select userid,upper(username) uppper_name from student; // 利用 upper 函数进 行大写转换 Hive 罕用的配置属性
1.Hive 数据仓库地位配置:hive-default.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value> // 数仓地址
<description>location of default database for the warehouse</description>
</property>// 赋权命令
$ $HADOOP_HOME/bin/hadoop fs -mkdir /user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse
2.Hive 运行日志的配置:hive-log4j.properties
hive.log.dir=/opt/modules/hive-1.1.0-cdh5.5.0/logs // 日志寄存目录
hive.log.file=hive.log
3.Hive 运行日志的级别:hive-log4j.properties
hive.root.logger=info,DRFA // 可改为(DEBUG,DRFA)
4. 在 cli 命令行上显示以后数据库名称,以及查问表的表头信息:hive-site.xml
<property>
<name>hive.cli.print.header</name>
<value>true</value> // 关上查问表会显示列名
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value> // 关上客户端会显示所在数据库
</property>
5. 在启动 hive 时设置配属属性项信息
bin/hive –hiveconf <property=value>
eg:
bin/hvie –hiveconf hive.cli.print.header=false // 将表头敞开要留神此种形式的设置,仅仅在以后会话 session 中无效,退出则生效。
6. 查看 hive 以后所有的配置信息
set;
set hive.cli.print.header;
set hive.cli.print.header=false; // 将表头敞开批改配置信息优先级:
• set -> –hiveconf -> hive-site.xml -> hive-defualt.xml
Hive shell 罕用的操作
bin/hive -help usage: hive
-d,–define <key=value> Variable subsitution to apply to hive
commands. e.g. -d A=B or --define A=B
--database <databasename> Specify the database to use
-e <quoted-query-string> SQL from command line
-f <filename> SQL from files
-H,–help Print help information
--hiveconf <property=value> Use value for given property
--hivevar <key=value> Variable subsitution to apply to hive
commands. e.g. --hivevar A=B
-i <filename> Initialization SQL file
-S,–silent Silent mode in interactive shell
-v,–verbose Verbose mode (echo executed SQL to the
console) 1. bin/hive -e "select * from db_hive.student"
bin/hive -e "select count(1) from db_hive.student"
可间接执行查问语句 2.bin/hive -f /opt/jars/stu.sql
可间接执行 sql 文件进行查问交互 3.save result
bin/hive -f stu.sql > /opt/datas/student.txt
将查问后果贮存到本地 Hive 中数据库的操作形式
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];1.create database db_hive;
CREATE DATABASE IF NOT EXISTS db_hive --- 规范形式
CREATE DATABASE IF NOT EXISTS db_kfk LOCATION '/user/kfk/kfkwarehouse';2.drop database
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
drop database IF EXISTS db_kfk;--- 规范形式
drop database IF EXISTS db_hive cascade; --- 当数据库里有表时可间接删除 3.use database
USE database_name;
Hive 中数据库表的创立形式(三种)
第一种:创立 Textfile 类型以“,”为分隔符的表
CREATE TABLE IF NOT EXISTS db_name.table_name
(col_name data_type)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
eg:
CREATE TABLE student (
userid string,
username string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘,’
STORED AS TEXTFILE;
第二种:复制已有表或视图的构造
CREATE TABLE IF NOT EXISTS db_name.table_name
LIKE existing_table_or_view_name
eg:
CREATE TABLE IF NOT EXISTS db_hive.stu
LIKE db_hive.student
第三种:复制已有表的构造和数据
CREATE TABLE IF NOT EXISTS db_name.table_name
AS select * from table
eg:
CREATE TABLE IF NOT EXISTS db_hive.stu
AS select * from db_hive.student