hive知识简单全面详解

本文全面介绍了Hive,一种基于Hadoop的数据仓库工具,它提供了类SQL查询语言HQL来简化大数据处理。文章详细阐述了Hive的优缺点,架构,以及为何选择Hive而非关系型数据库。接着,逐步讲解了Hive的安装、配置,包括使用MySQL作为元数据,以及通过JDBC连接远程服务。内容涵盖Hive的基础使用,如数据结构、DDL操作、数据管理和查询,包括分桶表、分区表的创建和管理。此外,还介绍了Hive的查询语句和函数,帮助读者掌握Hive的查询和分析技巧。
摘要由CSDN通过智能技术生成

1、认识Hive

1.1hive认识

Hive是建立在Hadoop上的数据仓库工具,可以借助提取、转化、加载技术存储、查询和分析查询在Hadoop中的大规模数据。使得开发人员使用相对简单的SQL语句,就可以操作Hadoop 处理海量数据。
  对外提供HQL,在查询时HQL语句转换为MapReduce任务,在Hadoop层执行。

1.1.1 优点

  • 提供了易于操作的类SQL查询语言HQL,不用再去写复杂的MapReduce程序,减少开发成本,上手快。
  • 利用MapRecuce计算引擎,HDFS作为存储系统,可以操作大数据集。
  • 支持用户的自定义函数,具有良好的容错性。

1.1.1 缺点

  • 延迟性比较高,因为启动MapReduce本身需要消耗很多资源
  • HQL语言表达能力有限,基于模板实现的,不够智能,处理复杂的业务能力有限,如迭代计算无法是实现
  • 不提供实时查询,处理大数据量擅长,处理小数据量没有优势

1.2hive架构

在这里插入图片描述

1.3 为什么用Hive而不用关系型数据库?

对比项 Hive RDBMS
查询语言 HQL SQL
数据存储 HDFS 块设备或本地文件系统
执行 MapReduce Executor
执行延迟 较高 较低
处理数据规模 较高 较低
可扩展性 较高 较低
数据更新 读多写少,不建议改写 经常修改

2、hive安装

实验环境:
三台机器,/etc/hosts文件中的机器名分别配置为
hadoop102,hadoop103,hadoop104(集群都是通过机器名来配置的, 只要网络没问题, IP不重要)。上面已经安装了hadoop集群和spark集群。另外,在hadoop102上安装了mysql数据库。

2.1安装及配置环境

1) 从官网下载hive安装包,上传到linux目录下

$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/

2) 修改/etc/profile.d/my_env.sh,添加环境变量

$ sudo vim /etc/profile.d/my_env.sh

3) 添加内容

#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin

 使环境变量生效

$ source /etc/profile

4)解决日志 Jar 包冲突,有多个log4j的日志jar包冲突,可以选择删除(可选操作)

$ mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak

5)初始化元数据库

$ bin/schematool -dbType derby -initSchema

2.2hive启动并使用

启动Hive之前一定要注意Hadoop的hdfs和yarn,必须是启动的
1) 启动

[xuyuan@hadoop102 hive]$ bin/hive

2)使用,对数据库的基本操作

 hive> show databases;
 hive> show tables; 
 hive> create table test(id int); 
 hive> insert into test values(1); 
 hive> select * from test;

hive使用的derby作为元数据库,开启hive之后就会占用元数据库,并且不能与其他客户端共享

2.2.1使用mysql作为hive的元数据

实验环境已经在hadoop102机器上安装好了mysql

首先需要获取mysql的jdbc驱动包mysql-connector-java-8.0.23.jar(与mysql版
本对应),放到hive的lib目录下。 hive默认是不带jdbc驱动包的。

1 )进入$HIVE_HOME/conf目录,新建一个配置文件hive-site.xml。添加以下内容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>

 <!-- jdbc 连接的 URL -->
 <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc:mysql://hadoop102:3306/metastoreuseSSL=false</value>
 </property>

 <!-- jdbc 连接的 Driver-->
 <property>
     <name>javax.jdo.option.ConnectionDriverName</name>
     <value>com.mysql.jdbc.Driver</value>
 </property>

 <!-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值