数据仓库Hive的安装和使用
发布日期:2021-06-22 22:48:20 浏览次数:2 分类:技术文章

本文共 4453 字,大约阅读时间需要 14 分钟。

文章目录

平台:阿里云轻量级应用服务器

Hadoop:3.2.2
Hive:3.1.2

一、Hive的安装

(一)下载安装文件

  1. Hive官网链接
  2. hive-3.1.2的链接
  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       # 将文件夹名改为hivesudo chown -R hadoop:hadoop hive          # 修改文件权限

(二)配置环境变量

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

(三)修改配置文件

  1. 修改配置文件名称
    cd /usr/local/hive/confsudo mv hive-default.xml.template hive-default.xml
  2. 新建一个配置文件
    cd /usr/local/hive/confsudo nano hive-site.xml
    文件内容
    javax.jdo.option.ConnectionURL
    jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true
    JDBC connect string for a JDBC metastore
    javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver
    Driver class name for a JDBC metastore
    javax.jdo.option.ConnectionUserName
    hive
    username to use against metastore database
    javax.jdo.option.ConnectionPassword
    hive
    password to use against metastore database
    hive.metastore.warehouse.dir
    /hive/warehouse
    hive default warehouse, if nessecory, change it

(四)安装并配置MySQL

  1. 安装MySQL
    sudo apt-get updatesudo apt-get install mysql-server
  2. 下载MySQL JDBC驱动程序
    下载链接:
    解压并进行相关设置
    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.shcd /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/librm /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/hadoopmkdir input
  2. 创建两个测试文件file1.txt和file2.txt

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

    ./hive/bin/hivehive> 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处理数据。

五、参考资料

转载地址:https://blog.csdn.net/qq_43279579/article/details/116332181 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:基于Tensorflow实现MNIST手写数字识别
下一篇:HBase的安装和基础使用

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年03月08日 20时27分55秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

二重积分转换成极坐标_二重积分转换极坐标r的范围如何确定? 2019-04-21
python中倒背如流_八字基础知识--倒背如流篇 2019-04-21
以太坊地址和公钥_以太坊地址是什么 2019-04-21
linux查看wifi信号命令_linux – 获取WIFI信号强度 – 寻求最佳方式(IOCTL,iwlist(iw)等)... 2019-04-21
npm 不重启 全局安装后_解决修复npm安装全局模块权限的问题 2019-04-21
vs格式化json 不生效_vs code 格式化 json 配置 2019-04-21
go 字符串反序列化成对象数组_Fastjson 1.2.24反序列化漏洞深度分析 2019-04-21
onmessage websocket 收不到信息_WebSocket断开重连解决方案,心跳重连实践 2019-04-21
hibernate mysql 缓存_hibernate和mysql的缓存问题,没辙了! 2019-04-21
abp框架 mysql_ABP框架使用Mysql数据库 2019-04-21
mysql树形递归删除_使用递归删除树形结构的所有子节点(java和mysql实现) 2019-04-21
linux mysql 不能连接远程_linux mysql 远程连接 2019-04-21
mysql $lt_mongodb中比较级查询条件:($lt $lte $gt $gte)(大于、小于)、查找条件... 2019-04-21
install python_Install python on AIX 7 2019-04-21
jquery查找div下第一个input_jquery查找div元素第一个元素id 2019-04-21
如何修改手机屏幕显示的长宽比例_屏幕分辨率 尺寸 比例 长宽 如何计算 2019-04-21
mysql 的版本 命名规则_MySQL版本和命名规则 2019-04-21
no java stack_Java Stack contains()用法及代码示例 2019-04-21
java动态代码_Java Agent入门学习之动态修改代码 2021-06-24
python集合如何去除重复数据_Python 迭代删除重复项,集合删除重复项 2021-06-24