数据仓库Hive的安装和使用

平台:阿里云轻量级应用服务器
Hadoop:3.2.2
Hive:3.1.2

一、Hive的安装

(一)下载安装文件

  1. Hive官网链接
    http://www.apache.org/dyn/closer.cgi/hive/
  2. hive-3.1.2的链接
    https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
  3. 下载
    sudo wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
    
  4. 解压及相应设置
    sudo tar -zxvf ./apache-hive-3.1.2-bin.tar.gz -C /usr/local   # 解压到/usr/local中
    cd /usr/local/
    sudo mv apache-hive-3.1.2-bin hive       # 将文件夹名改为hive
    sudo chown -R hadoop:hadoop hive          # 修改文件权限
    

(二)配置环境变量

  1. 进入环境变量设置文件
    sudo nano ~/.bashrc
    
  2. 添加变量的内容
    export HIVE_HOME=/usr/local/hive
    export PATH=$PATH:$HIVE_HOME/bin
    
  3. 使文件生效
    source ~/.bashrc
    

(三)修改配置文件

  1. 修改配置文件名称
    cd /usr/local/hive/conf
    sudo mv hive-default.xml.template hive-default.xml
    
  2. 新建一个配置文件
    cd /usr/local/hive/conf
    sudo nano 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://localhost:3306/hive?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>
      </property>
      <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
      </property>
      <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
        <description>username to use against metastore database</description>
      </property>
      <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive</value>
        <description>password to use against metastore database</description>
      </property>
      <!--可选,用于指定 Hive 数据仓库的数据存储在 HDFS 上的目录-->
      <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/hive/warehouse</value>
        <description>hive default warehouse, if nessecory, change it</description>
      </property>
    </configuration>
    

(四)安装并配置MySQL

  1. 安装MySQL
    sudo apt-get update
    sudo apt-get install mysql-server
    
  2. 下载MySQL JDBC驱动程序
    下载链接:https://downloads.mysql.com/archives/c-j/
    解压并进行相关设置
    cd ~
    tar -zxvf mysql-connector-java-8.0.17.tar.gz   #解压
    #下面将mysql-connector-java-8.0.17.jar拷贝到/usr/local/hive/lib目录下
    cp mysql-connector-java-8.0.17/mysql-connector-java-8.0.17.jar  /usr/local/hive/lib
    
  3. 启动MySQL
    service mysql start  #启动MySQL服务
    mysql -u root -p   #登录MySQL数据库
    
    遇到输入密码的时候,直接回车
  4. 在MySQL中为Hive新建数据库
    新建一个名称为hive的数据库,用来保存Hive的元数据。
    mysql> create database hive; 
    
    在这里插入图片描述
  5. 配置MySQL允许Hive接入
    MySQL进行权限配置,允许Hive连接到MySQL
    mysql> grant all on *.* to hive@localhost identified by 'hive'; 
    mysql> flush privileges; 
    
    在这里插入图片描述
  6. 初始化元数据库
    schematool -dbType mysql -initSchema
    
    出现到如下问题
    org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
    解决方法:
    打开/usr/local/hive/conf/hive-site.xml,在hive配置文件hive-site.xml中加上serverTimezone=GMT
    在这里插入图片描述
  7. 启动Hive
    启动Hive之前,需要先启动Hadoop集群
    cd /usr/local/hadoop
    ./sbin/start-dfs.sh
    cd /usr/local/hive
    ./bin/hive
    
    出现下面错误
    Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgumen
    解决方法
    hadoop和hive的jar包冲突
    cp /usr/local/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/hive/lib
    rm /usr/local/hive/lib/guava-19.0.jar
    

二、Hive的数据类型

  1. Hive的基本数据类型
    在这里插入图片描述
  2. Hive的集合数据类型
    在这里插入图片描述

三、Hive基本操作

  1. 创建数据库、表、视图
    保存的位置为/user/hive/warehouse/,根据上面是否添加可选的配置
    ①创建数据库
    create database hive;
    #避免因为数据库已存在,而出现抛异常,加上if not exists关键字,则不会抛出异常
    create database if not exists hive;
    
    在这里插入图片描述
    ②创建表
    #通常创建表
    hive> use hive;
    hive>create table if not exists usr(id bigint,name string,age int);
    #创建可以读取以“,”分隔的数据
    create table student(id int, name string, sex string, age int, department string) row format delimited fields terminated by ",";
    
    在这里插入图片描述
    在这里插入图片描述
  2. 删除数据库、表、视图
    ①删除数据库
    drop database hive;
    #删除数据库hive,因为有if exists关键字,即使不存在也不会抛出异常
    drop database if not exists hive;
    #加上cascade关键字,可以删除当前数据库和该数据库中的表
    drop database if not exists hive cascade;
    
    ②删除表
    #删除表usr,如果是内部表,元数据和实际数据都会被删除;如果是外部表,只删除元数据,不删除实际数据
    drop table if exists usr;
    
    ③删除视图
    drop view if exists little_usr;
    
  3. 往表中加载数据
    load data local inpath "/home/hadoop/student.txt" into table student;
    
    在这里插入图片描述
  4. 查询数据
    select * from student;
    
    在这里插入图片描述
  5. 查看表结构
    desc student;
    
    在这里插入图片描述

四、Hive应用实例——WordCount

实例描述:需要创建一个需要分析的输入数据文件,然后编写HiveQL语句实现WordCount算法

  1. 创建input目录,其中input为输入目录

    cd /usr/local/hadoop
    mkdir input
    
  2. 创建两个测试文件file1.txt和file2.txt

    cd  /usr/local/hadoop/input
    echo "hello world" > file1.txt
    echo "hello hadoop" > file2.txt
    
  3. 编写HiveQL语句实现WordCount算法

    ./hive/bin/hive
    hive> create table docs(line string);
    hive> load data inpath "hdfs://localhost:9000/input" overwrite into table docs;
    hive>create table word_count as 
        select word, count(1) as count from
        (select explode(split(line,' '))as word from docs) w
        group by word
        order by word;
    

    在这里插入图片描述
    在这里插入图片描述

    select语句查看运行结果

    select * from word_count;
    

    在这里插入图片描述
    小结
    Hive是一个构建于Hadoop顶层的数据仓库工具,主要用于对存储在 Hadoop 文件中的数据集进行数据整理、特殊查询和分析处理。Hive在某种程度上可以看作是用户编程接口,本身不存储和处理数据,依赖HDFS存储数据,依赖MapReduce处理数据。

五、参考资料

  1. hive初始化元数据报错Exception in thread “main” java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgumen
  2. 错误:org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version
  3. Hive学习之路 (二)Hive安装
  4. http://dblab.xmu.edu.cn/blog/2802-2/
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值