HIVE基础入门学习(必会!!附带jar包)

hive介绍
Apache的顶级项目,(是一个java程序)
Facebook公司(2008年)开源给Apache基金会!
hive官网: http://hive.apache.org/
hive到底是干什么的
将SQL转换成MapReduce程序,并将程序提交到YARN集群运行,不会自动生成结果文件,
直接读取HDFS上的数据进行处理.
sql query(查询):它的查询类似于MySQL数据库中SQL查询!

---------------------------------------------------------------------------------------------------------------------------

概念

SQL on hadoop(不仅仅是数据库)
阵营:建立在Hadoop之上的提供SQL方式分析数据的框架
hive框架是此类型框架的基础框架

----------------------------------------------------------------------------------------------------------------------------

学好hive前置:

Hadoop:MapReduce,YARN,HDFS
mysql:DDL(对表的操作)/DML(对数据的操作)

-----------------------------------------------------------------------------------------------------------------------------

程序对比:

  数据:
    hadoop hive spark sqoop
    java hadoop spark

  mapreduce的wordcount程序:
map:分割,转换
(hadoop,1),hive,1),spark,1)...
reduce:相加
  
  hive的wordcount功能:
  select count(单词字段) from 表 group by 单词字段

-----------------------------------------------------------------------------------------------------------------------------

hive常用版本

0.13.1 2014年发布,经典版本
1.2.1:较新版本(常用) 底层推荐使用MapReduorce;
2.X:2017年发布,底层推荐使用spark,TeZ分析数据,而不是MapReduce
hive1.2版本的下载地址: https://archive.apache.org/dist/hive/hive-1.2.1/
------------------------------------------------------------------------------------------------------------------------------hive安装
上传、解压、重命名
修改配置
hive-env.sh (Hadoop_home)
创建数据仓库:
hive数据需要保持到HDFS上,(hdfs上需要有hive所运行的路径和权限!)
创建对应的目录和赋予权限
bin/hdfs dfs -mkdir -p /tmp
bin/hdfs dfs -mkdir -p /user/hive/warehouse
bin/hdfs dfs -chmod g+w /tmp
bin/hdfs dfs -chmod g+w /user/hive/warehouse
hive配置官方网址: https://cwiki.apache.org/confluence/display/Hive/GettingStarted
------------------------------------------------------------------------------------------------------------------------------hive和mysql的差异:
共性:
database:数据库,命名空间
将同一类的表放到此空间下,方便进行管理操作
table:表,字段:数据类型和字段名称

区别:
hive没有真正意义上的数据表;它的数据表是
映射表和对应的数据文件所组成的!
对应的数据文件就是存储在HDFS上的文件。

----------------------------------------------------------------------------------------------------------------------------

使用hive:

    交互式命令(command line interface) (理解为客户端!CLI)

bin/hive
----------------------------------------------------------------------------------------------------------------------------
metastore(元存储:记录表信息和映射信息等的信息)
hive中无论是创建的表还是数据库,他们元数据metaData需要存储
默认情况下,存在derby数据库中,(因为derby数据库只支持一个会话,所以要是将元文件存储在derby数据库中,hive就只能开启一个会话,
为了让hive能打开多个会话,所以要将元数据存储到mysql上!因为mysql能开启多个会话!)
derby是嵌入式数据库
每次仅支持一个会话访问
在企业开发中,我们通常将metaData存储到MySQL数据库中(官方推荐)

将metaData存储到MySQL中
删除metastore_db和derby.log
在mysql上创建一个存放元数据的数据库:
create databases Metastore

配置
创建conf/hive-site.xml (在hive的cong目录下)
配置hive-site.xml文件
官方配置:https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin

->指定元数据存放在mysql上

                                    javax.jdo.option.ConnectionURL

                                    jdbc:mysql://所在的数据库/数据库名?createDatabaseIfNotExist=true

->设置mysql的驱动(保证数hive的lib目录下有jar包存在)

    javax.jdo.option.ConnectionDriverName

                        com.mysql.jdbc.Driver

->告知数据库的用户名

    javax.jdo.option.ConnectionUserName

         <user name>

->告知数据库的用户密码

    javax.jdo.option.ConnectionPassword

                <password>


            导入MySQL驱动包(https://pan.baidu.com/s/1p4g998gJgrIApuktMMbq-A)

                将jar包导入到hive的lib目录下


验证:
-1->多个窗口启动交互式命令(bin/hive)
-2->去MySQL看看metastore数据库是否存在
-3->瞅瞅metastore_db和derby.log是否存在

----------------------------------------------------------------------------------------------------------------------------
为方便开发调试,设置hive-site.xml文件
显示当前所在数据库
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
设置hive的结果显示字段名
<property>
<name>hive.cli.print.header</name>
<value>true</value>

</property>


---------------------------------------------------------------------------------------------------------------------------
导入数据方式
方式一:使用load加载数据
加载本地数据
LOAD DATA LOCAL INPATH '/opt/datas/sw17-top11-dl-sh.anon.csv' 
加载hdfs:将文件移动(mv)到了表对应的目录下面
LOAD DATA  INPATH '/opt/datas/sw17-top11-dl-sh.anon.csv'

方式二:使用HDFS的PUT功能
直接使用HDFS的Put上传命令,将数据上传到指定目录

企业中用的比较多

----------------------------------------------------------------------------------------------------------------------------

运行模式
MapReduce的运行模式
集群模式:YARN
本地模式:IDEA (Linux系统时常用)

hive的运行模式:
当然hive也有两种模式;
集群模式:就是在yarn上运行,生成MapReduce程序到yarn上运行!
本地模式:就是不编译MapReduce程序,直接当做数据库操作!(但是只有小于128M的文件才信)

设置方式:
->配置文件中hive-site.xml
<property>
<name>hive.exec.mode.local.auto</name>
<value>true</value> 
</property>
->hive cli :仅当前会话有效
设置:set hive.exec.mode.local.auto=true
查看:set hive.exec.mode.local.auto
功能:
如果设置为true,
hive 框架会根据一定的条件判定,走本地模式还是集群模式
如果处理的数据块<128M且mapTask个数<5 才能走本地,

要是不满足这两个条件,就会走集群模式!


----------------------------------------------------------------------------------------------------------------------------

                                                      

作者:唐平

时间:2018-6-26

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值