Hive的安装和使用

hive的安装和使用

概述

由FaceBook开源用于解决海量结构化日志的数据统计工具。

hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive是十分适合数据仓库的统计分析和Windows注册表文件。

安装

  • HDFS和MR就绪
  • 需要安装Mysql服务
[root@HadoopNode00 ~]# yum install -y mysql-server
[root@HadoopNode00 ~]# mysqladmin -u root password 'root'
[root@HadoopNode00 ~]# mysql -u root -p1234
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use mysql

mysql> delete from user where password = '';

mysql> grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> create  database hive;
Query OK, 1 row affected (0.00 sec)

安装配置Hive

[root@HadoopNode00 ~]# mkdir /home/hive # 创建hive文件夹
[root@HadoopNode00 hive]# cd /home/hive/ # 进入到HIve目录
[root@HadoopNode00 hive]# tar -zxvf apache-hive-1.2.1-bin.tar.gz  # 解压
[root@HadoopNode00 ~]# vi /home/hive/apache-hive-1.2.1-bin/conf/hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://192.168.126.10:3306/hive</value>
  </property>
  
    <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  
   <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>
  
   <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>1234</value>
  </property>
</configuration>

拷贝相关依赖

  • 将mysql 的依赖拷贝到/home/hive/apache-hive-1.2.1-bin/lib/
  • 将hive目录下的lib目录下的jline-2.12.jar拷贝到/home/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib/下,并且删除jline0.9.94低版本的数据

配置环境变量

[root@HadoopNode00 ~]# vi .bashrc
export HIVE_HOME=/home/hive/apache-hive-1.2.1-bin
export PATH=$PATH:$HIVE_HOME/bin
[root@HadoopNode00 ~]# source .bashrc

安装配置Hive

管理员模式
[root@HadoopNode00 ~]# hive
hive> create table t_user (id string,name string);
OK
Time taken: 0.291 seconds
hive> insert into  t_user values ('1','zs');

[root@HadoopNode00 ~]# hive -e 'use lqq; select * from t_user;'

Logging initialized using configuration in jar:file:/home/hive/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.properties
OK
Time taken: 0.722 seconds
OK
1       zs
Time taken: 0.527 seconds, Fetched: 1 row(s)
JDBC服务模式
[root@HadoopNode00 ~]# hiveserver2 # 必须保证hiveserver2处于运行状态  前台启动模式

[root@HadoopNode00 ~]# hiveserver2 & # 必须保证hiveserver2处于运行状态 后台启动模式

[root@HadoopNode00 ~]# beeline -u jdbc:hive2://HadoopNode00:10000 -n root

[root@HadoopNode00 ~]#  beeline -u jdbc:hive2://$HOSTNAME:10000 -n root  # 获取主机名 $HOSTNAME

使用

Hive 数据类型

数据类型(primitive ,array,map,struct)
primitive (原始类型)
	整数:TINYINT SMALLINT INT BIGINT
	布尔:BOOLEAN
	小数:FLOAT DOUBLE
	字符:STRING CHAR VARCHAR
	二进制:BINARY
	时间类型:TIMESTAMP DATE
array(数组):ARRAY<data_type>

map(key-value类型):MAP<KEY-VALUE>

struct(结构体类型):STRUCT<clo_name:data_type>

创建表

create table  t_user(
id int,
name string ,
birthday date,
salary double,
hobbbies array<string>,
card map<string,string>,
address struct<country:string,city:string>
);
0: jdbc:hive2://HadoopNode00:10000> desc formatted t_user;    #表的描述信息 

默认分隔符

分隔符 描述
\n 分割行,每一行就是一行记录
\A 用于分割字段 \001
\B 用于分割array 或者是struct中的元素 或者用于map结构中的k-v对分隔符 \002
\C 用于map中的k-v的分隔符 \003

将数据导入到Hive表中

  • 准备数据
    在这里插入图片描述
#  外部导入
[root@HadoopNode00 ~]# hadoop fs -put t_user /user/hive/warehouse/lqq.db/t_user    

#  内部命令行导入(从本地文件系统导入)
0: jdbc:hive2://HadoopNode00:10000> load data local inpath '/root/t_user' overwrite into table t_user;

#  内部命令行导入(从HDFS导入)
0: jdbc:hive2://HadoopNode00:10000> load data inpath '/t_user' overwrite into table t_user;

local 代表本地 文件 overwrite覆盖

JDBC 访问 Hive 实现数据查询

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class App {
   
    public static void main(String[] args) throws Exception {
   
        /*
         *加载驱动
         * */
        Class.forName("org.apache.hive.jdbc.HiveDriver");
        Connection connection = DriverManager.getConnection("jdbc:hive2://HadoopNode00:10000/lqq", "root", null);
        /*
         * 创建stm
         * */
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值