19hive的基本知识——好程序

本文深入探讨了Facebook为处理海量社交数据和机器学习而研发的Hive大数据仓库。Hive通过类SQL语句简化数据分析,介绍了其架构、特性和与Hadoop的关系。详细讲解了三种安装模式,并提供了配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么有hive
facebook最初研发来处理海量的社交数据和机器学习。

hive:简化分析:使用sql,开发效率高500行

mr:10000


hive是什么
hive是一个大数据仓库
hive是一个基于hadoop的数据仓库
hive是一个基于hadoop的数据仓库,可以通过类sql语句来对数据进行读、写、管理(元数据管理)

hive的架构(三层)
用户连接客户端:cli、jdbc/odbc、web gui
thrift server:第三方服务
metastore:hive的元数据存储(库名、表名、字段名、数据类型、分区、分桶、创建者、创建时间等)
Driver:解释器,将hql语句生成抽象表达式树。
compiler:编译器,对hql语句进行词法、语法、语言的编译(此时需要联系元数据),编译完成后生成一个有向无环的执行计划。
a->b->c->d->e
optimizer:优化器,将执行计划进行优化,减少不必要的列、使用分区等优化策略
executor:执行器,将优化后的执行计划转换成hadoop的mapreduce框架再提交给yarn集群去运行

hive的特性
通过SQL轻松访问数据的工具,从而支持数据仓库任务,如提取/转换/加载(ETL)、报告和数据分析。
将结构强加于多种数据格式的机制
访问直接存储在Apache HDFS中的文件™ 或在其他数据存储系统(如Apache HBase)中™ 
通过Apache Tez执行查询™,阿帕奇星火™,或MapReduce
带HPL-SQL的过程语言
通过Hive LLAP、Apache YARN和Apache Slider进行亚秒查询检索。


hive和hadoop的关系
hive本身没有存储和计算的功能。hive相当于套在hadoop上的一个壳子。hive是基于hadoop,hive的存储基于hdfs(hbase),hive的计算基于mapreduce。

hive的安装
常用的有3种安装方式(hive会自动检测hadoop的环境变量,如果有就必须启动hadoop)模式主要是元数据的管理
1、本地模式
使用hive自带的默认元数据库derby来进行元数据存储,通常用于测试环境
优点:使用简单,不需要进行配置
缺点:只支持单session

2、远程模式(mysql服务和hive在同一台服务器上)hive是mysql的客户端
通常使用关系型数据库来进行元数据存储,mysql、sql server oracle等待jdbc驱动的数据库
优点:支持多session
缺点:需要配置,还需要安装mysql等数据库
1、解压并配置环境变量
2、配置hive的配置文件
2、1 vi hive-env.sh
JAVA_HOME = 

2、2配置 vi hive-site.xml

<configuration>
<!--配置mysql的连接字符串-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.137.91:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!--指定连接mysql的驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!--指定连接mysql的用户名-->
<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>123456</value>
<description>password to use against metastore database</description>
</property>
</configuration>

3、将mysql的驱动包cp到hive的安装目录下的lib下 
4、在mysql上的hive元数据库的编码集一定要使用latin1(用默认的,不能有utf-8)
5、启动
 

3、远程模式(mysql服务和hive不在同一台服务器上)

 

本地模式安装、远程模式安装

1、先将其解压到指定目录下

2、编辑文件,配置环境变量,才可以使hive在任意地方执行命令

hive启动之前,先启动hadoop(因为hive是套在hadoop外面的一个壳子)hive会自动检测hadoop的环境变量,如果有就必须启动hadoop

然后在启动hive

 

远程的,元数据是存储到mysql里面,所以要配置元数据的管理

远程版的 hive-env.sh(这个配不配都没有什么问题)

 

第二个是自定义配置(上面哪里有文件)

 

将mysql的驱动包放到hive的lib下面

 

基本操作

查看状态,下面的状态是active

 

在那个目录下执行hive命令,就在那个目录下生成元数据的文件,其他用户进来是不可以的,因为已经被占用了

同一个用户,在那个目录下执行hive ,就在那个目录下生成这个文件,如果没有就生成,有就加载,如果另外一个用户进来,则不能再加载,因为已经被占用了。是启动目录生成。

 

下面进行测试写法

上传文件

查询

创建一个表

加载数据到t2表里面

 

正确写法

hive使用
hive的默认列分隔符:
\001 \u0001 ctrl + v + ctrl + a

create table if not exists t3(
id int,
name string,
age int
)
row format delimited 
fields terminated by ','
lines terminated by '\n'
;

再加载文件到表2

 

自定义分隔符

将文件加载过来

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值