【人工智能训练师】综合案例 HBase与Hive的集成

9.1 HBase与Hive

任务目的
简单回顾了解hive
了解hive与hbase的区别
任务清单
任务1:hive简介
任务2:hbase与hive的区别
任务步骤
任务1:hive简介
  什么是Hive呢? Apache Hive是一个构建在Hadoop基础设施之上的数据仓库。

构建在Hadoop之上的数据仓库
Hive定义了一种类SQL查询语言:HQL(类似SQL但不完全相同)
通常用于进行离线数据分析(采用MapReduce)
底层支持多种不同的执行引擎(例如hive on MapReduce)
支持多种不同的压缩格式、存储格式以及自定义函数
  Apache Hive数据仓库软件可以使用SQL方便地阅读、编写和管理分布在分布式存储中的大型数据集。结构可以投射到已经存储的数据上。提供了一个命令行工具和JDBC驱动程序来将用户连接到Hive。体系架构如下:

9.1-1

9.1-1

而驱动又包括如:解释器、编译器、优化器和执行器。

任务2:hbase与hive的区别
特点

Hive

执行MapReduce任务,兼容JDBC
分区机制控制海量数据
HBase

通过存储KV对儿工作
限制

Hive

操作需要花费较长时间
必须提供预先定义好的schema
Hive与ACID不兼容
HBase

学习成本高
依赖zookeeper
使用场景

Hive

针对的是OLAP应用,适合用来对一段时间内的数据进行分析查询。
HBase

key-value型数据库,适合用来进行大数据的实时查询。
总结

Hive

表是逻辑表
行模式处理数据
存储数据稠密
使用Hadoop处理
批任务处理
支持SQL
HBase

物理表存储非结构化数据
列模式
存储数据密度小
实时查询
支持和row-level的更新
不适用于有join,多级索引,表关系复杂的应用场景。

9.2 安装hive

任务目的
掌握RPM安装MySQL的方式
掌握hive的安装方式
任务清单
任务1:安装MySQL
任务2:安装hive
任务步骤
任务1:安装MySQL
1、使用RPM包的安装方式安装MySQL。

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

9.2-1

9.2-1

2、安装MySQL服务

yum -y install mysql-server

9.2-2

9.2-2

3、改变文件拥有者和群组为MySQL。

chown -R mysql:mysql /var/lib/mysql /var/run/mysqld

9.2-3

9.2-3

4、由于此时的/var/run/mysqld下没有pid和sock文件,所以重建授权表,并指定MySQL用户。执行完两条命令,按回车键。

/usr/bin/mysql_install_db --user=mysql
/usr/bin/mysqld_safe --user=mysql &

9.2-4

9.2-4

5、进入MySQL环境

mysql -uroot

9.2-5

9.2-5

任务2:安装hive
1、配置系统环境变量,使之生效。

vim /etc/profile
source /etc/profile

9.2-6

9.2-6

2、确保配置成功,检测版本号。

hive --version

9.2-7

9.2-7

3、创建hive需要的HDFS目录。

hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir -p /user/hive/tmp
hadoop fs -mkdir -p /user/hive/log
hadoop fs -chmod 777 /user/hive/warehouse
hadoop fs -chmod 777 /usr/hive/tmp
hadoop fs -chmod 777 /usr/hive/log
hadoop fs -ls /user/hive

9.2-8

9.2-8

4、在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>
<property>
<name>system:java.io.tmpdir</name>
<value>/tmp/hive/java</value>
</property>
<property>
<name>system:user.name</name>
<value>${user.name}</value>
</property>
<!-- 资源临时文件存放位置 -->
<property>
<name>hive.exec.scratchdir</name>
<value>/user/hive/tmp</value>
<description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
</property>
<!-- 设置 hive 仓库的 HDFS上的位置 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<!-- 设置日志位置 -->
<property>
<name>hive.querylog.location</name>
<value>/user/hive/log</value>
<description>Location of Hive run time structured log file</description>
</property>
<!-- 指定MySQL的URL地址 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
</property>
<!-- 设置MySQL驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 设置连接需要的用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hadoop</value>
</property>
<!-- 设置连接需要的密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property></configuration>

5、MySQL中创建一个hive数据库,和一个Hadoop用户。并为该用户赋予足够的连接权限。最后退出MySQL环境。

CREATE DATABASE hive; 
USE hive; 
CREATE USER 'hadoop'@'localhost' IDENTIFIED BY 'hadoop';
GRANT ALL ON hive.* TO 'hadoop'@'localhost' IDENTIFIED BY 'hadoop'; 
GRANT ALL ON hive.* TO 'hadoop'@'%' IDENTIFIED BY 'hadoop'; 
FLUSH PRIVILEGES; 
quit;

6、把MySQL的驱动包放置在hive的lib目录下。

mv ./mysql-connector-java-5.1.35.jar lib/
ls lib/

9.2-9

9.2-9
7、初始化hive数据库。运行后会显示如下的信息。

schematool -dbType mysql -initSchema

8、修改 hive conf 目录下 hive-env.sh.template 为 hive-env.sh,并修改如下内容。

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

9.2-10

9.2-10

9、终端输入hive测试环境。

bin/hive
show databases

9.2-11

9.2-11

9.3 hive表同步给hbase

任务目的
掌握创建可同步表的语法及导入数据方式
任务清单
任务1:hive表同步给hbase
任务步骤
任务1:hive表同步给hbase
  初始化操作,执行这一步的作用在于,在hive数据库下创建运行hive所需要的一些列的表。进入到hive的bin目录,执行初始化命令。

bin/schematool -dbType mysql -initSchema

9.3-1
9.3-1

1、新建表

进入hive客户端,创建测试库后,创建一张hbase可识别的表。

create database test;
use test;
create table if not exists hbase_hive(
id int,
name String
)
stored by "org.apache.hadoop.hive.hbase.HBaseStorageHandler"
with serdeproperties("hbase.columns.mapping"=":key,cf1:uname")
tblproperties("hbase.table.name"="h_hive");

2、hbase检测

进入hbase的shell,查看是否创建了h_hive表。

9.3-2

9.3-2

3、这种特殊表不能使用load语句进行导入数据。演示错误的方法:testdata目录下有一个student.txt文件,存储了测试数据。导入hive表。

use test;
load data local inpath '/root/software/hive-2.3.4/testdata/student.txt' into table hbase_hive;

9.3-3

9.3-3

4、下面是正确方式:新建一张普通的hive表stu,为导入hbase_hive做准备。

create table stu(
id int,
name string)
row format delimited fields terminated by '\t';

9.3-4

9.3-4

5、把测试数据student.txt导入中间表stu。

use test;
load data local inpath '/root/software/hive-2.3.4/testdata/student.txt' into table stu;

9.3-5

9.3-5

6、使用insert的方式把数据载入到特殊表。

insert into table hbase_hive
select * from test.stu;
select * from table_hive;

9.3-6

9.3-6

7、hbase查看。进入hbase的shell环境,查看表中数据。

9.3-7

9.3-7

9.4 HBase表同步给Hive

任务目的
掌握hbase表同步给hive的基本方法
任务清单
任务1:HBase表同步给Hive
任务步骤
任务1:HBase表同步给Hive
初始化

在hive的bin目录下,执行初始化操作。

bin/schematool -dbType mysql -initSchema

9.4-1

9.4-1

创建表

进入hbase的shell环境,创建测试命名空间ns、测试表test,包括一个列族info。

bin/hbase shell
create_namespace 'ns'
create 'ns:test','info'

9.4-2

9.4-2

插入数据

为test表插入测试数据。

put 'ns:test','1','info:name','tom'
put 'ns:test','1','info:age','22'
put 'ns:test','1','info:sex','man'
put 'ns:test','2','info:name','jeryy'
put 'ns:test','2','info:age','21'
put 'ns:test','2','info:sex','woman'

hive建表

创建一个指向已存在hbase表的hive表。

create external table hbase_hive(key int,name string,age string,sex string
) 
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties ("hbase.columns.mapping" = "info:name,info:age,info:sex")
tblproperties("hbase.table.name" = "ns:test","hbase.mapred.output.outputtable" = "ns:test");

查看结果

查看表hbase_hive中的数据。

9.4-3

9.4-3

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于STM32的图像处理监控系统

1. 引言 随着物联网和智能家居的普及&#xff0c;图像处理和监控系统在安全防范、家庭监控等方面应用越来越广泛。本项目旨在使用STM32开发板和OV7670摄像头模块搭建一个简单的图像处理监控系统。系统能够捕获图像并进行基本的处理与展示。 2. 环境准备2.1 硬件需求 - STM32开…

QML-简单项目实战一

一、简介 使用QML创建一个简单的登录界面&#xff0c;代码内容来源于bilibili中的视频。 实现效果图如下&#xff1a; 二、实现步骤 1. 核心控件和布局管理和登录事件处理 import QtQuick 2.12 import QtQuick.Controls 2.12 import QtQuick.Window 2.12 /*1. 核心控件和布局…

字节青训-小F的永久代币卡回本计划、

目录 一、小F的永久代币卡回本计划 问题描述 测试样例 解题思路&#xff1a; 问题理解&#xff1a; 数学公式&#xff1a; 代码实现&#xff1a; 最终代码&#xff1a; 运行结果&#xff1a; 二、构造特定数组的逆序拼接 问题描述 测试样例 解题思路&#xff1a;…

[ Linux 命令基础 4 ] Linux 命令详解-文本处理命令

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

06:(寄存器开发)对上电/复位的SystemInit函数进行分析

SystemInit函数分析 通过第5章的时钟树的学习&#xff0c;基本了解了SystemClock总线&#xff0c;AHB总线&#xff0c;APB1总线&#xff0c;APB2总线的时钟频率。那么单片机一上电或者按下复位时&#xff0c;这些总线的时钟频率是如何变化的喃&#xff1f; 这和STM32的启动文件…

C++ : STL容器(适配器)之stack、queue剖析

STL容器适配器之stack、queue剖析 一、stack、queue的接口&#xff08;一&#xff09;stack 接口说明&#xff08;二&#xff09;queue 接口说明 二、stack、queue的模拟实现&#xff08;一&#xff09;stack、queue是容器适配器stack、queue底层默认容器--deque1、deque概念及…

三菱QD77MS定位模块外部信号选择功能

“外部信号选择功能” 是在使用上/下限限位信号和近点狗信号的情况下&#xff0c;从以下信号中选择的功能。 "QD77MS的外部输入信号 "伺服放大器的外部输入信号 "经由 CPU 的外部输入信号(QD77MS 的缓冲存储器) 经由 CPU 的外部输入信号(QD77MS 的缓冲存储器)的…

Vue3-06_路由

路由 后台路由是根据请求url&#xff0c;匹配请求处理的后台模块&#xff08;路径&#xff09; 前台根据访问路径&#xff0c;决定显示的内容。 路由就是&#xff1a; 访问hash 与内容的对应关系 路由的工作方式 用户点击页面的路由链接导致url地址栏中的Hash值发生了变化前…

【知识科普】TCP与UDP这两者之间的对比

TCP与UDP这两者之间的对比 概述TCP 协议的基本概念TCP 协议的工作原理TCP 协议的报文结构TCP 协议的流量控制TCP 协议的可靠性TCP 与 UDP 的比较TCP 协议的应用TCP 协议的优缺点优点缺点 概述 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的…

初次体验Tauri和Sycamore(1)

原创作者&#xff1a;庄晓立&#xff08;LIIGO&#xff09; 原创时间&#xff1a;2024年11月10日 原创链接&#xff1a;https://blog.csdn.net/liigo/article/details/143666827 版权所有&#xff0c;转载请注明出处。 前言 Tauri 2.0发布于2024年10月2日&#xff0c;Sycamore…

基于Spring Boot+Vue的学院食材采供管理系统

一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构&#xff1a;B/S架构 运行环境&#xff1a;win10/win11、jdk17 前端&#xff1a; 技术&#xff1a;框架Vue.js&#xff1b;UI库&#xff1a;ElementUI&#xff1b; 开发工具&…

【C++】vector模拟实现、迭代器失效问题(超详解)

vector会使用之后我们来模拟实现一下&#xff0c;通过对vector的模拟实现&#xff0c;我们来说一下迭代器失效问题。 1.准备工作 在头文件vector.h里声明和实现函数&#xff0c;然后在test.cpp里测试代码的正确性。 在vector.h中用命名空间分隔一下&#xff0c;因为c库里面也有…

基于SpringBoot的渔具管理系统【附源码】

基于SpringBoot的渔具管理系统 效果如下&#xff1a; 系统主页面 系统登陆页面 管理员主页面 用户管理页面 渔具信息管理页面 租赁信息管理页面 归还信息管理页面 渔具信息页面 用户登陆页面 个人中心页面 研究背景 随着社会的发展&#xff0c;渔具销售企业之间的竞争与合作…

string

文章目录 一. STL1.概念2.版本 二. string类2.1 为什么学习string类2. 标准库中的string类2.2.1 构造&#xff08;7个&#xff09;2.2.2 对string类对象进行访问和修改&#xff08;1&#xff09;operator[]&#xff08;2&#xff09;迭代器1.迭代器的使用2.迭代器的价值&#x…

B2B订货系统功能设计与代码开发(PHP + MySQL)

在B2B&#xff08;Business to Business&#xff09;电子商务中&#xff0c;企业之间的商品订购、交易和供应链管理是核心功能。一个高效的B2B订货系统可以帮助企业管理库存、订单、采购等业务流程。本文将介绍一个基于PHP与MySQL技术栈的B2B订货系统的功能设计与开发流程。 一…

【2024】前端学习笔记17-Vue初体验

学习笔记 1.什么是vue2.vue初体验3.代码拆分释义4.本文新内容1.什么是vue Vue是一个用于构建用户界面的渐进式JavaScript框架。 它专注于视图层,易于集成或与现有项目结合使用,也可以通过其生态系统实现更复杂的单页应用(SPA)。 Vue的核心特点包括响应式数据绑定、组件化开…

java动态代理

静态代理和动态代理 1、代理模式2、静态代理2.1 定义接口2.2 被代理对象实现2.3 代理对象2.4 客户端 3、JDK动态代理3.1 JDK动态代理例子3.1.1 定义接口3.1.2 被代理对象实现3.1.3 实现InvocationHandler接口3.1.4 创建代理对象 3.2 动态代理底层原理3.3 查看生成的代理类 4、C…

多线程的创建方式以及及Thread类详解

目录 一.线程的创建方法&#xff1a;&#xff08;重点&#xff09; 一&#xff1a;继承Thread类 写法一&#xff1a;正常写法 写法二&#xff1a;匿名内部类 二.实现Runnable接口 写法一&#xff1a;正常写法 写法二&#xff1a;匿名内部类 三. 实现 Callable 接口 ​…

408最后冲刺阶段,怎么做题才能考到120+?

C哥专业提供——计软考研院校选择分析专业课备考指南规划 重要性排序如下&#xff1a;真题占据首位&#xff0c;紧随其后的是王道模拟题&#xff0c;王道书与题目则紧随其后&#xff0c;而408统考配套习题&#xff08;高教版&#xff09;与之大致相当。 真题&#xff0c;无疑…

如何对接低价又稳定的影视会员渠道?

对接低价折扣影视会员渠道通常涉及到与影视内容提供商或第三方分销商的合作。以下是一些基本步骤和注意事项&#xff0c;帮助你顺利对接这类渠道&#xff1a; 1. 市场调研 了解市场&#xff1a;研究市场上现有的影视会员服务提供商&#xff0c;包括价格、服务、用户反馈等。确…