Hive学习笔记 (一)

一、Hive初识入门

 

1.  Hive的背景及概念

Hive学习笔记 (一)_第1张图片

之前的程序员大多都使用sql,让他们写MapReduce需要培训,成本高。

Hive学习笔记 (一)_第2张图片

ETL Extract-Transform-Load



2.  Hive的架构、优点及使用场景讲解

Hive学习笔记 (一)_第3张图片

Hive学习笔记 (一)_第4张图片

Hive学习笔记 (一)_第5张图片

Hive学习笔记 (一)_第6张图片

Hive学习笔记 (一)_第7张图片


3.  Hive安装部署及简单测试(使用derby存储元数据) 

修改配置文件:

hive-env.sh(重命名hive-env.sh.template

设置hadoop目录和hive的配置目录:

Hive学习笔记 (一)_第8张图片


创建文件夹且添加权限


一个公司,有多个部门,不同部门是不同的组,用的是不同的hive仓库,相当于每个部门装一个hive。但是,hive默认的数据仓库目录是一样的,所以需要手动改变。

Hive学习笔记 (一)_第9张图片

hive-site.xml配置即可。

 

使用schematool 初始化metastoreschema

[[email protected]]# bin/schematool -dbType derby –initSchema

 

启动并测试:

Hive学习笔记 (一)_第10张图片

Hive学习笔记 (一)_第11张图片

Hive学习笔记 (一)_第12张图片

select count(*)转换成了mapreduce

Hive学习笔记 (一)_第13张图片


创建表并加载数据:

Hive学习笔记 (一)_第14张图片

Hive学习笔记 (一)_第15张图片

(注意:overwrite覆盖表中的原有数据)


 

4.  Hive安装部署(使用mysql存储元数据)

注意:hivemysql要安装到同一台机器上;接着上面的配置继续配置。


为什么不用derby(内存数据库)改用mysql

内存数据库derby只能供一个人使用,在另外一个节点上同时开启就会报如下错误:

Hive学习笔记 (一)_第16张图片

而现在我们整个集群都要使用hive元数据,所以改用mysql


安装配置mysql(通过rpm方式):

下载地址:

http://mirrors.sohu.com/mysql/


查看所有用户:

Hive学习笔记 (一)_第17张图片 

修改mysql数据库的登陆权限:

GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;


刷新权限:

FLUSH PRIVILEGES;

 

mysql的驱动包放到hivelib目录下

 

修改配置文件:

hive-site.xml(复制hive-default.xml.template

因为default配置项太多,也可手动创建一个hive-site.xml


配置mysql四要素:

数据库地址、驱动名称、用户名、密码

Hive学习笔记 (一)_第18张图片


    javax.jdo.option.ConnectionURL
    jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true


    javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver


    javax.jdo.option.ConnectionUserName
    root


    javax.jdo.option.ConnectionPassword
    123456


使用schematool 初始化metastoreschema

[[email protected]]# bin/schematool -dbType mysql -initSchema

(如果出现已存在的异常,把hive目录下的metastore_db重命名metastore_db.temp)


启动hive

第一次启动慢,因为要初始化元数据

Hive学习笔记 (一)_第19张图片

查看mysql会发现多了hive数据库(存储元数据)

Hive学习笔记 (一)_第20张图片

(“hive”hive-site.xml中配置的名字)


5.  Hive的常用操作 

查看表详细信息:

desc 表名

Hive学习笔记 (一)_第21张图片


desc extended 表名

Hive学习笔记 (一)_第22张图片


desc formatted 表名

Hive学习笔记 (一)_第23张图片

Hive学习笔记 (一)_第24张图片

 

查看所有函数:

hive> show functions;

Hive学习笔记 (一)_第25张图片


查看函数如何使用:

Hive学习笔记 (一)_第26张图片


如何在查看表的时候显示字段名称和数据库名称:

hive-site.xml中添加如下配置:

Hive学习笔记 (一)_第27张图片


   hive.cli.print.header
   true


   hive.cli.print.current.db
   true

重启hive

Hive学习笔记 (一)_第28张图片


查看HDFS文件信息:

Hive学习笔记 (一)_第29张图片

 

hive 命令行中执行本地文件系统操作:

Hive学习笔记 (一)_第30张图片


查看执行hive语句的历史记录:

保存在当前用户的家目录中的.history中:

Hive学习笔记 (一)_第31张图片

Hive学习笔记 (一)_第32张图片


不进hive命令行界面执行sql语句:

Hive学习笔记 (一)_第33张图片

bin/hive -e "select * from student;"

测试:

Hive学习笔记 (一)_第34张图片


不进hive命令行界面执行sql脚本文件:

bin/hive -f hivef.sql

(在实际的开发中经常用) 

写一个sql脚本


执行该脚本

Hive学习笔记 (一)_第35张图片

sql查询的结果保存到txt文件中

Hive学习笔记 (一)_第36张图片

 

查看数据所属的文件:

Hive学习笔记 (一)_第37张图片


6.  Hive运行日志配置和查看

默认的日志配置:

加载的是lib包下hive-common包中的日志配置

Hive学习笔记 (一)_第38张图片

 

修改:

Hive学习笔记 (一)_第39张图片

hiveconf目录下的hive-log4j2.properties.template重命名为hive-log4j2.propertieshive启动时将自动加载它。

Hive学习笔记 (一)_第40张图片


日志的存放位置:

Hive学习笔记 (一)_第41张图片

可以将日志文件设置到hive目录下:

property.hive.log.dir =/usr/opt/modules/apache-hive-2.1.1-bin/logs


测试(日志存放目录已修改):

Hive学习笔记 (一)_第42张图片


设置日志信息显示在控制台:

Hive学习笔记 (一)_第43张图片

[[email protected]]# bin/hive --hiveconf hive.root.logger=INFO,console;

Hive学习笔记 (一)_第44张图片



7.  Hive常见属性配置(重点)

 

以下皆在上文有介绍,本小节作为回顾


Hive数据仓库位置配置 

default

       /user/hive/warehouse

注意事项

       *在仓库目录下,没有对默认的数据库default创建文件夹

       *如果某张表属于default数据库,直接在数据仓库目录下创建一个文件夹

Hive学习笔记 (一)_第45张图片(需要配置到hive-site.xml)

在hdfs上创建目录并赋予权限:

$ $HADOOP_HOME/bin/hadoop fs -mkdir   /tmp

$ $HADOOP_HOME/bin/hadoop fs -mkdir   /user/hive/warehouse

$ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp

$ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse

 

Hive运行日志信息位置 

       $HIVE_HOME/conf/hive-log4j.properties

              hive.log.dir=/opt/modules/hive-0.13.1/logs

              hive.log.file=hive.log


指定hive运行时显示的log日志的级别

       $HIVE_HOME/conf/hive-log4j.properties

              hive.root.logger=INFO,DRFA


cli命令行上显示当前数据库,以及查询表的行头信息

       $HIVE_HOME/conf/hive-site.xml

             

                     hive.cli.print.header

                     true

             

             

                     hive.cli.print.current.db

                     true

             

 

在启动hive时设置配置属性信息

           $ bin/hive --hiveconf

 

查看当前所有的配置信息

       hive > set ;  // 查看所有配置

       hive (db_hive)> set system:user.name ; // 查看system:user.name的值

              system:user.name=beifeng

       hive (db_hive)> set system:user.name=beifeng ;// 设置system:user.name的值为beifeng

(此种方式,设置属性的值,仅仅在当前会话session生效)





你可能感兴趣的:(Hive学习笔记 (一))