大数据技术之Hive
一、Hive基本概念
1、什么是Hive
Hive:由Facebook开源用于解决海量结构化日志的数据统计。
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。
本质是:将HQL转化成MapReduce程序
1)Hive处理的数据存储在HDFS
2)Hive分析数据底层的实现是MapReduce
3)执行程序运行在YARN上
2、为什么使用Hive
1)直接使用hadoop所面临的问题
(1)人员学习成本太高
(2)项目周期要求太短
(3)MapReduce实现复杂查询逻辑开发难度太大
2)Hive的好处
(1)操作接口采用类SQL语法,提供快速开发的能力。
(2)避免了去写MapReduce,减少开发人员的学习成本。
(3)扩展功能很方便。
3、Hive 的特点
1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)
2)避免了去写MapReduce,减少开发人员的学习成本。
3)Hive的执行延迟比较高,因此hive常用于数据分析,对实时性要求不高的场合;
4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。
5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
二、Hive 基本Shell操作
1、启动hive
[victor@node1 hive]$ bin/hive
2、查看数据库
hive> show databases;
3、打开默认数据库
hive> use default;
4、显示default数据库中的表
hive>show tables;
5、创建一张表
hive> create table student(id int, name string) ;
6、显示数据库中有几张表
hive> show tables;
7、查看表的结构
hive> desc student;
8、向表中插入数据
hive> insert into student values(1000,"alex");
hive> insert into student(id,name) values(1,"xiaoming");
9、查询表中数据
hive> select * from student;
10、删除表
hive> drop table student;
11、退出hive
hive> quit;
三、Hive 初次启动ERROR解决
1、问题描述
自从spark2.0.0发布之后,每次启动hive的时候,总会发现一个小问题,启动 hive --service metastore的时候,会报一个小BUG: 无法访问/lib/spark-assembly-*.jar
[victor@hadoop102 ~] $ hive
Ls : cannot access /sdp/spark2/lib/spark-assembly-*.jar:No such file or directory
Logging initialized using configuration in file:/sdp/hive/conf/hive-log4j.properties
分析其源码架构,发现主要原因:在//bin/hive文件中,有这样的命令:加载spark中相关的JAR包
# add spark assembly jar to the classpath
If [[ -n “$SPARK_HOME”]]
Then
sparkAssemblyPath=`ls ${SPARK_HOME}/lib/spark-assembly-*.jar`
CLASSPATH=”${CLASSPATH}:${sparkAssemblyPath}”
fi
但是spark升级到spark2以后,原有lib目录下的大JAR包被分散成多个小JAR包,原来的spark-assembly-.jar已经不存在,所以hive没有办法找到这个JAR包。
2 、解决办法
修改//bin/hive文件,将加载原来的lib/spark-assembly-.jar`替换成jars/*.jar,就不会出现这样的问题。
# add spark assembly jar to the classpath
If [[ -n “$SPARK_HOME”]]
Then
sparkAssemblyPath=`ls ${SPARK_HOME}/jars/ *.jar`
CLASSPATH=”${CLASSPATH}:${sparkAssemblyPath}”
fi
3、验证
[victor@hadoop102 ~] $ hive
Logging initialized using configuration in file:/sdp/hive/conf/hive-log4j.properties
hive >