hive 基础

本章内容

  1. Hive 的架构
  2. Hive 的安装
  3. Hive 的 DDL
  4. Hive 的 DML

Hive简介

Hive 可以将存储在 HDFS 中的结构化数据映射为数据库中的一张表,并提供了一种 SQL 方言对其进行查询。

  1. 这些SQL语句最终会翻译成MapReduce程序执行。
  2. 它本身并不会存储和计算数据,完全依赖于HDFS和MapReduce。
  3. Hive 简化了 MapReduce 的编写。

hive的构架

 

Hive 的安装

安装 Hive 的主要步骤:

  1. 安装 Hadoop版本:2.7.7
  2. 安装 MySQL(MetaStore)版本:5.7
  3. 安装 Hive版本:2.3.7
  4. 安装 DBeaver(客户端)版本:7.1.0

检查 Hadoop 环境

1、查看 Hadoop 版本号

2、启动 Hadoop,检查进程是否正确

 

 

安装 MySQL

  1. 安装MySQL,使用以下命令:sudo apt-get install mysql-server
  2. 查看默认的账号和密码,使用以下命令:sudo cat /etc/mysql/debian.cnf

 

安装 MySQL

  1. 使用管理员登录 MySQL,使用以下命令:mysql -u debian-sys-maint –p
  2. 创建 hive 用户,并设置密码,使用以下命令:CREATE USER 'hive'@'%' IDENTIFIED BY '123456';
  3. 授予 hive 用户权限,使用以下命令:GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%’;
  4. FLUSH PRIVILEGES;
  5. 退出 MySQL,使用以下命令:exit

安装 Hive

  1. 上传 Hive 到 /home/Hadoop
  2. 解压 Hive 到 /usr/local 目录中,使用以下命令:sudo tar -xvf apache-hive-2.3.7-bin.tar.gz -C /usr/local
  3. 进入/usr/local目录,使用以下命令:cd /usr/local
  4. 将解压后的目录重命名为 hive,使用以下命令:sudo mv apache-hive-2.3.7-bin hive
  5. 修改 hive 目录的拥有者为 hadoop,使用以下命令:sudo chown -R hadoop hive

配置 Hive

  1. 进入 hive 配置文件目录,使用以下命令:cd /usr/local/hive/conf/
  2. 创建 hive-site.xml 文件,使用以下命令:vim hive-site.xml

<configuration>

<property>

                <name>system:java.io.tmpdir</name> <value>/usr/local/hive/tmp</value>

</property>

<property>

                <name>system:user.name</name> <value>root</value>

</property>

<property>

                <name>javax.jdo.option.ConnectionUserName</name>

                 <value>hive</value>

</property>

<property>

                <name>javax.jdo.option.ConnectionPassword</name>

                <value>123456</value>

</property>

<property>

                <name>javax.jdo.option.ConnectionURL</name>

                <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>

</property>

<property>

                <name>javax.jdo.option.ConnectionDriverName</name>

                <value>com.mysql.jdbc.Driver</value>

</property>

</configuration>

进入 hive 的依赖库目录,使用以下命令:cd /usr/local/hive/lib

上传mysql的驱动文件到lib目录 驱动文件是:mysql-connector-java-5.1.47.jar

配置 Hive

  1. 进入hadoop软件的配置文件目录,使用以下命令:cd /usr/local/hadoop/etc/hadoop/
  2. 编辑core-site.xml文件,增加以下内容

<property>

        <name>hadoop.proxyuser.hadoop.groups</name>

        <value>*</value>

</property>

<property>

        <name>hadoop.proxyuser.hadoop.hosts</name>

        <value>*</value>

</property>

配置 Hive

  1. 进入hadoop用户的家目录,使用以下命令:cd ~
  2. 编辑环境变量文件,使用以下命令:vim .bashrc
  3. 在环境变量文件最后添加以下内容:

export HIVE_HOME=/usr/local/hive

export PATH=${HIVE_HOME}/bin:$PATH

刷新环境变量,使用以下命令:source .bashrc

初始化Hive,使用以下命令:schematool -dbType mysql -initSchema

 环境变量配置成功

验证 Hive

  1. 查询 Hive 中的默认数据库列表,使用以下命令:hive -e 'show databases'

 

安装 DBreaver

  1. 启动Hive服务器,使用以下命令:hiveserver2
  2. 安装并启动DBeaver
  3. 解压下载的DBeaver压缩包
  4.  双击DBeaver.exe启动程序

 

安装 DBreaver

  1. 新建Hive链接配置
  2. 点击工具栏的数据库
  3.  选择新建链接
  4.  在链接中搜索hive
  5. 选择hive链接类型:

 

安装 DBreaver

  1. 配置Hive链接信息
  2. 主机填写Linux服务器的ip
  3. 填写Linux的帐号和密码
  4. 安装Hive驱动
  5. 点击编辑驱动设置
  6. 下载/更新驱动

 

 

  1. 链接Hive驱动
  2. 配置完成后毕后一次点击确定和完成
  3. 自动链接Hive

 

Hive中的数据库

  1. 常用语句:
  2. 如果数据库不存在则创建:CREATE DATABASE IF NOT EXISTS school;
  3. 列出所有数据库:SHOW DATABASES;
  4. 切换数据库:USE school;
  5. 删除数据库:DROP DATABASE IF EXISTS school CASCADE;
  6. 默认只能删除空的数据库,即不包含表的数据库;

CASCADE关键字可以先删除数据库中的表,在删除数据库

  1. Hive中的数据库本质上HDFS上的一个目录
  2. 默认位于/usr/hive/warehouse目录下
  3. 由属性hive.metastore.warehouse.dir决定

数据库的文件目录名称是以.db结尾

Hive中的表

数据类型:本质还是Java中的数据类型的

 

分隔符:通过分隔符来识别行、列和集合中的元素

默认的分隔符都是一些不常用的字符

 

  1. 自定义行分隔符 LINES TERMINATED BY '\n'
  2. 自定义列分隔符 全部放到以下子句后边 ROW FORMAT DELIMITED
  3. 自定义列分隔符 FIELDS TERMINATED BY ' ‘
  4. 自定义集合分隔符 COLLECTION TERMINATED BY ' '
  5. 自定义Map分隔符 MAP TERMINATED BY ' '

Hive中的表

  1. 导入HDFS数据到表,本质是一个剪切操作 剪切数据文件到表目录中
  2. 导入本地数据到表,本质是一个上传操作 上传数据文件到表目录中
  3. 表结构存在MySQL的Hive数据库中 TBLS、COLUMNS_V2等
  4. 表数据存储在表目录中
  5. 这种表叫做内部表(管理表),管理着数据的生命周期
  6. 删除表的时候会删除表结构和、表目录和其中的数据文件

外部表

  1. 和其他程序共享数据,不管理数据的生命周期
  2. 不会在数据库目录下创建表目录,也不会剪切数据文件
  3. 也不会在删除表的时候删除数据文件
  4. 使用EXTERNAL关键字表明这是个外部表
  5. 使用LOCATION关键字指明数据在HDFS上的存储位置

分区表

  1. 把表中的多个数据文件,按照分区字段的值进行管理
  2. 一个分区字段的值就对应表目录下的一个目录
  3. 分区字段也是表中的列,叫做虚拟列(虚拟字段)
  4. 分区字段的值不在数据文件中,导入数据时手动设置
  5. 使用 PARTITIONED BY 字段设置分区字段

Hive中的查询

  1. 查询语法 SELECT…FROM…WHERE…

 

  1. 排序:
  1. ASC 升序(默认),DESC 降序
  2. ORDER BY:全局排序,速度慢
  3. SORT BY:对每个 reduce 中的数据进行排序,全局无序
  4. DISTRIBUTE BY:按照列值进行分区 CLUSE BY
  5. 如果 SORT BY 和 DISTRIBUTE BY 使用的是相同列可以合并为 CLUSE BY

连接查询

  1. 左连接——返回左表全部数据,右表匹配不上返回 null ----SELECT a.id , a.name , b.course_name FROM teacher a LEFT JOIN score b ON a.id = b.teacher_id;
  2. 右连接——返回右表全部数据,左表匹配不上返回 null----SELECT b.id , b.name , a.course_name FROM score a RIGHT JOIN teacher b ON a. teacher_id = b.id;
  3. 内连接——只返回匹配上的数据----SELECT a.id, a.name, b.course_name, b.score FROM student a INNER JOIN score b ON a.id = b.student_id;

今天的学习分享已完成 耶!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琳小小小

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值