Day7 —— 大数据技术之Hive

Hive快速入门系列

    • Hive的概述
      • 什么是Hive?
      • 使用Hive的原因
    • Hive架构
    • Hive安装
    • Hive配置文件修改
    • 启动Hive
      • 以命令行方式启动(在$HIVE_HOME/bin目录下)
      • 以JDBC连接启动(beeline方式连接)
    • Hive基本操作
      • Hive数据库操作
      • Hive表操作
      • 导入数据到表中
    • Hive应用简单示例:WorldCount

Hive的概述

什么是Hive?

Hive 是一个基于 Hadoop 的数据仓库工具,用于处理大规模数据集。它提供了类似于 SQL 的查询语言 HiveQL,允许用户在 Hadoop 分布式存储中执行查询和分析数据。
Hive的本质就是将HiveQL语句转换为MapReduce任务后运行,非常适合做数据仓库的数据分析。

使用Hive的原因

  • Hive 使用类SQL 查询语法, 最大限度的实现了和SQL标准的兼容,大大降低了传统数据分析人员处理大数据的难度
  • 以MR 作为计算引擎(也可选择Spark计算引擎)、HDFS 作为存储系统,为超大数据集设计的计算/ 扩展能力

Hive架构

Hive架构中主要包括客户端(Client)、Hive Server、元数据存储(MetaStore)、驱动器(Driver)

在这里插入图片描述

Hive Client:

Hive 客户端是用户与 Hive 交互的接口,用户可以通过 Hive 客户端(如命令行界面、Hue 等)提交 HiveQL 查询和管理 Hive 表结构等操作。

Hive Driver:

Hive Driver 接收用户提交的 HiveQL 查询,并负责编译、优化和执行查询计划。它将查询转换为 MapReduce 作业或 Tez 任务,并与相应的执行引擎进行交互。

Hive Metastore:

Hive Metastore 存储了 Hive 表的元数据信息,包括表结构、分区信息、表位置等。这些元数据通常存储在关系型数据库中(如MySQL),Hive 客户端和服务通过 Metastore 访问和管理表的元数据。

Hive安装

先安装MySQL(以在线安装方式为例)

下载mysql的repo源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

安装mysql-community-release-el7-5.noarch.rpm包

rpm -ivh mysql-community-release-el7-5.noarch.rpm

查看下载的文件

ls -1 /etc/yum.repos.d/mysql-community*

安装MySQL

yum install mysql-server

启动MySQL服务

systemctl start mysql.service

使用MySQL

mysql -uroot -p

密码直接回车就进入了,若想设置密码,则

set password for 用户名@localhost = password(‘新密码’);

退出mysql 下次登录就是新密码了

exit;

再安装Hive

解压apache-hive-3.1.3-bin.tar.gz到指定目录,例如:

tar -xzvf apache-hive-3.1.3-bin.tar.gz -C /export/servers

配置环境变量(在全局配置文件/etc/profile)

export HIVE_HOME=/export/servers/apache-hive-3.1.3-bin
export HIVE_CONF_DIR=/export/servers/apache-hive-3.1.3-bin/conf
export PATH=$ PATH:$ HIVE_HOME/bin

使配置生效

source /etc/profile

Hive配置文件修改

在hive根目录的conf目录,创建一个hive-site.xml文件,并添加如下内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements.  See the NOTICE file distributed withthis work for additional information regarding copyright ownership.The ASF licenses this file to You under the Apache License, Version 2.0(the "License"); you may not use this file except in compliance withthe License.  You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.
-->
<configuration><!-- 数据库 start --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive_meta?useSSL=false</value><description>mysql连接</description></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>mysql驱动</description></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><description>数据库使用用户名</description></property><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value><description>数据库密码</description></property><!-- 数据库 end --><property> <name>hive.metastore.warehouse.dir</name><value>/hive/warehouse</value><description>hive使用的HDFS目录</description></property><property> <name>hive.cli.print.current.db</name><value>true</value></property><property><name>hive.support.concurrency</name><value>true</value><description>开启Hive的并发模式</description></property><property><name>hive.txn.manager</name><value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value><description>用于并发控制的锁管理器类</description></property><property><name>hive.server2.thrift.bind.host</name><value>my2308-host</value><description>hive开启的thriftServer地址</description></property><property><name>hive.server2.thrift.port</name><value>10000</value><description>hive开启的thriftServer端口</description></property><property><name>hive.server2.enable.doAs</name><value>true</value></property><!-- 其它 end -->
</configuration>

修改$HADOOP_HOME/etc/hadoop/core-site.xml 开启hadoop代理功能

<property><name>hadoop.proxyuser.root.groups</name><value>*</value><description>配置超级用户允许通过代理用户所属组</description></property><property><name>hadoop.proxyuser.root.hosts</name><value>*</value><description>配置超级用户允许通过代理访问的主机节点</description></property><property><name>hadoop.proxyuser.root.users</name><value>*</value></property>

拷贝hive-env.sh.template模版配置文件为hive-env.sh

cp hive-env.sh.template hive-env.sh

在hive-env.sh文件中添加Hadoop目录位置

HADOOP_HOME=/export/servers/hadoop-3.2.0

对日志文件改名

mv hive-log4j2.properties.template hive-log4j2.properties

在MySQL中创建hive用的元数据库hive_meta

create database hive_meta default charset utf8 collate utf8_general_ci;

拷贝mysql驱动jar 到/export/servers/apache-hive-3.1.3-bin/lib

cp mysql-connector-java-5.1.40-bin.jar /export/servers/apache-hive-3.1.3-bin/lib

删除冲突的log4j(log4j-slf4j-impl-2.4.1.jar)

rm -f /export/servers/apache-hive-3.1.3-bin/lib/log4j-slf4j-impl-2.4.1.jar

hive初始化mysql

schematool -dbType mysql -initSchema

启动Hive

以命令行方式启动(在$HIVE_HOME/bin目录下)

hive

以JDBC连接启动(beeline方式连接)

先启动hiveserver2服务(在$HIVE_HOME/bin目录下)

方式一:前台启动启动hiveserver2服务:
hiveserver2

方式二:后台启动hiveserver2服务:
nohup hiveserver2 > /dev/null 2>&1 &

第一种:在hive的bin目录中执行:beeline
然后:!connect jdbc:hive2://localhost:10000
输入操作hadoop集群的用户名和密码(本次以root用户名,123456为密码)

第二种:beeline -u jdbc:hive2://localhost:10000 -n root

Hive基本操作

Hive数据库操作

  • 创建数据库
    CREATE DATABASE [IF NOT EXISTS] database_name
    [COMMENT database_comment]
    [LOCATION hdfs_path]
    [WITH DBPROPERTIES (property_name=property_value, …)];

其中:WITH DBPROPERTIES ,用来指定数据属性数据。

–创建带有属性的数据库
create database testdb WITH DBPROPERTIES (‘creator’ = ‘tp’,‘date’=‘2024-06-12’);
– 显示创建语句
show create database testdb;
– 显示所有数据库
show databases;

  • 删除数据库

RESTRICT:严格模式,若数据库不为空,则会删除失败,默认为该模式。
CASCADE:级联模式,若数据库不为空,则会将库中的表一并删除。

Hive表操作

  • 建表语法

– EXTERNAL 代表外部表
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], …)]
[COMMENT table_comment]
– 分区表设置 分区的字段和类型
[PARTITIONED BY (col_name data_type [COMMENT col_comment], …)]
– 桶表设置 按照什么字段进行分桶
[CLUSTERED BY (col_name, col_name, …)
– 桶内的文件 是按照 什么字段排序 分多少个桶
[SORTED BY (col_name [ASC|DESC], …)] INTO num_buckets BUCKETS]
– 分隔符 + 序列化反序列化
[ROW FORMAT row_format]
– 输入输出格式
[STORED AS file_format]
– 表所对应的hdfs目录
[LOCATION hdfs_path]

  • 表分类

内部表

内部表又称受控表,当删除内部表的时候,存储在文件系统上的数据(例如HDFS上的数据)和元数据都会被删除。先有内部表,再向表中插入数据。
–创建inner_test表(内部表)
CREATE TABLE inner_test(word string, num int);

删除内部表,表对应的hdfs目录也一并删除
– 创建emp职工表(内部表)
CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’;

外部表

创建外部表需要使用EXTERNAL关键字,当删除外部表的时候,只删除元
数据,不删除数据。
使用场景,例如:某个公司的原始日志数据存放在一个目录中,多个部门对原始数据进行分析,那么创建外部表就是比较好的选择了,因为即使删除了外部表,原始数据并不会被删除。

分区表

分区表是为了防止暴力扫描全表,提高查询效率。分区字段在源文件中是不存在的,需要在添加数据的时候手动指定。
每一个分区对应一个目录。通过partitioned by来在创建分区表的时候添加分区字段。分区表可以是内部表,也可以是外部表。
使用场景:可以通过分区表,将每天搜集的数据进行区分,查询统计的时候通过指定分区,提高查询效率。

导入数据到表中

追加Linux本地文件里的数据到emp表

load data local inpath ‘/root/data/emp.txt’ into table emp;

overwrite覆盖操作,使用Linux本地文件里的数据覆盖掉原来emp表的数据

load data local inpath ‘/root/data/emp.txt’ overwrite into table emp;

将hdfs上某文件里的数据追加到emp表(此操作完毕后,hdfs上的该文件就自动删除)

load data inpath ‘hdfs://my2308-host:9000/data/emp.txt’ into table emp;

overwrite覆盖操作,使用hdfs上某文件里的数据覆盖掉emp表的数据(此操作完毕后,hdfs上的该文件就自动删除)

load data inpath ‘hdfs://my2308-host:9000/data/emp.txt’ overwrite into table emp;

Hive应用简单示例:WorldCount

创建一个data目录准备worldcount计算的文件data1.txt、data2.txt

[root@BigData01 ~]# mkdir data
[root@BigData01 ~]# cd data
[root@BigData01 data]# vim data1.txt
hello world
hello hadoop
hello java
[root@BigData01 data]# vim data2.txt
welcome to hadoop
hello java hadoop

进入hive环境,编写HiveQL语句实现WordCount算法

[root@BigData01 data]# hive
hive> create database if not exists testdb;
hive> use testdb;
hive> create table if not exists docs(line string);
hive> load data local inpath ‘/root/data/’ overwrite into table docs;
hive> create table wordcount as
select word,count(1) as count from
(select explode(split(line,’ ')) as word from docs) w
group by word
order by word;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css 动画

transform的3D动画 3D形变函数会创建一个合成层来启用GPU硬件加速 translate transform: translateY(100px);transform: translateX(100px);transform: translateZ(100px);transform: translate3d(100px,100px,100px); // x,y,z的简写rotate deg弧度 transform: rotateX(-40…

C语言学习记录20240622

这次需要用 C 语言库 Allegro 写爆破彗星游戏。项目有一些描述如需要绘制飞船、彗星、子弹&#xff0c;需要响应按键实现飞船加速、减速、转向、开火&#xff0c;需要绘制弹道&#xff0c;需要实现彗星旋转、缩放&#xff0c;需要碰撞检测&#xff0c;需要显示计分。 这些用 w…

Redis—SortedSet数据类型及其常用命令详解

文章目录 一、Redis概述SortedSet类型1 ZADD&#xff1a;向有序集合添加成员2 ZREM&#xff1a;从有序集合中移除一个或多个成员3 ZSCORE : 获取sorted set中的指定元素的score值4 ZRANK&#xff1a;获取sorted set 中的指定元素的排名5 ZCARD&#xff1a;获取sorted set中的元…

赵丽颖纯白茉莉绽放温柔之美

赵丽颖纯白茉莉&#xff0c;绽放温柔之美在这个繁忙喧嚣的娱乐圈&#xff0c;赵丽颖以其独特的魅力&#xff0c;成为了无数人心中的白月光。近日&#xff0c;赵丽颖工作室发布了一组live图&#xff0c;她身着一袭温柔白裙&#xff0c;宛如一朵盛开的纯白茉莉花&#xff0c;美得…

kali linux安装中文输入法

kali linux安装中文输入法&#xff1a;先进入root权限 第1步&#xff1a;安装fctix sudo apt-get install fcitx第2步&#xff1a;安装fcitx-pinyin输入法 apt-get install fcitx-pinyin第3步&#xff1a;配置输入法 打开 Fcitx配置 应用&#xff0c;点击 &#xff0c;去除勾…

音视频的Buffer处理

最近在做安卓下UVC的一个案子。正好之前搞过ST方案的开机广告&#xff0c;这个也是我少数最后没搞成功的项目。当时也有点客观原因&#xff0c;当时ST要退出机顶盒市场&#xff0c;所以一切的支持都停了&#xff0c;当时啃他家播放器几十万行的代码&#xff0c;而且几乎没有文档…

语音数据集2-VCTK多人音频

VCTK VCTK全称是Centre for Speech Technology Voice Cloning Toolkit (CSTR’s VCTK Corpus),即语音克隆工具包。 1. 简介 数据是109 位英语母语人士&#xff08;不同口音&#xff09;。每位朗读大约 400 句子 大部分句子都是从《先驱报》(格拉斯哥)选出&#xff0c;外加一段…

RIP动态路由配置

1、搭建网络 搭建拓扑、规划IP地址、划分网段、设置端口 2、配置交换机&#xff0c;路由器 三层交换机配置 Switch>enable Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#hostname S3560S3560(config)#vlan 10 S3560(con…

ComfyUI 和 WebUI

概述 ComfyUI&#xff1a;像拼积木一样&#xff0c;你可以用各种“模块”搭建出一个复杂的图像生成“机器”。适合那些喜欢自己动手折腾、希望精确控制每个步骤的人。WebUI&#xff1a;更像是一个智能“图像生成器”&#xff0c;你只需要输入文字描述&#xff0c;它就能生成图…

【Excel经验】字符串处理方法

概览-公式汇总 序号公式功能公式公式示例公式说明1把多列内容拼接在一起&#xff0c;作为新的一列的内容CONCATENATE (text1,text2,…)CONCATENATE(A2,“#”,B2,“”,C2)用于根据多个列的内容拼成我们指定格式的内容&#xff0c;拼接的内容通常来源于原始数据&#xff0c;同时…

深度学习论文: Depth Anything V2

深度学习论文: Depth Anything V2 Depth Anything V2 PDF: https://arxiv.org/pdf/2406.09414v1 代码:https://depth-anything-v2.github.io/ PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks …

51单片机定时器中断配置

测试环境 单片机型号&#xff1a;STC8G1K08-38I-TSSOP20&#xff0c;其他型号请自行测试&#xff1b; IDE&#xff1a;Keil C51&#xff1b; 定时器配置及主要代码 以定时器T0为例&#xff0c;查看手册&#xff0c;有4种工作模式&#xff1a;模式0&#xff08;16位自动重装载…

MSPM0G3507——GPIO例程讲解1——input_capture

函数&#xff1a; 参数&#xff1a; 返回值&#xff1a; 主函数代码&#xff1a; #include "ti_msp_dl_config.h"extern volatile uint32_t interruptVectors[];int main(void) {SYSCFG_DL_init(); //把所有的LED灯和按键初始化了一…

设计模式——设计模式介绍

设计模式 设计模式介绍 设计模式&#xff1a; 系统服务设计中针对场景的一种解决方案&#xff0c;可以解决功能逻辑开发中的共性问题&#xff0c;并非所有问题一种开发思想&#xff0c;每个设计模式都有解决某一类问题的概念模型&#xff0c;不要拘束于一种的固定的代码格式…

LangChain:如何高效管理 LLM 聊天历史记录?

LangChain 团队发布了一篇关于使用 Dragonfly DB 来有效管理 LangChain 应用程序聊天历史记录的教程。 该教程旨在解决用户在使用 LangChain 应用程序时普遍遇到的一个问题&#xff1a;如何高效地管理聊天历史记录。 LangChain 团队在推文中强调了 Dragonfly DB 在管理聊天历…

Spring (59)如何在Spring中实现异步处理

在Spring中实现异步处理通常涉及到Async注解。这个注解允许你以异步的方式执行方法&#xff0c;即方法的调用将立即返回&#xff0c;而实际的执行将在不同的线程上异步进行。 使用Async的步骤&#xff1a; 启用异步支持&#xff1a;在配置类上使用EnableAsync注解&#xff0c…

【vue3|第12期】Vue3的Props详解:组件通信

日期&#xff1a;2024年6月19日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

【Redis】黑马点评短信登录

https://blog.csdn.net/qq_33888850/article/details/129770077 https://blog.csdn.net/weixin_51515308/article/details/128010464 https://www.bilibili.com/video/BV1cr4y1671t?p24 导入数据库 https://github.com/MagicToDo/hm-dianping sql文件在 hm-dianping-init\src…

【线性代数】【一】1.6 矩阵的可逆性与线性方程组的解

文章目录 前言一、求解逆矩阵二、线性方程组的解的存在性总结 前言 前文我们引入了逆矩阵的概念&#xff0c;紧接着我们就需要讨论一个矩阵逆的存在性以及如何求解这个逆矩阵。最后再回归上最初的线性方程组的解&#xff0c;分析其中的联系。 一、求解逆矩阵 我们先回想一下在…

计算机网络:运输层 - TCP首部格式 连接的创建与释放

计算机网络&#xff1a;运输层 - TCP首部格式 & 连接的创建与释放 TCP首部格式源端口 目的端口序号确认号数据偏移保留控制位窗口检验和紧急指针 TCP连接创建 - 三次握手TCP传输过程TCP连接释放 - 四次挥手 TCP首部格式 TCP的首部如下&#xff1a; 首部的前20 byte是固定的…