当前位置: 首页 > news >正文

如何构建Hive数据仓库Hive 、数据仓库的存储方式 以及hive数据的导入导出

什么是Hive

hive是基于Hadoop的一个数据仓库工具,可以将结构化数据映射为一张表。
hive支持使用sql语法对存储的表进行查询
(本质上是把sql转成mapreduce的任务执行)

Hive有三个特点:

  • hive所存储的数据是放在HDFS文件系统中的
  • hive的底层实现是mapreduce
  • 这些任务是运行在Yarn上的

如何构建Hive数据仓库

什么是数据仓库

官方定义:数据仓库是面向主题的、集成的、不可更新的、随时间的变化而不断变化的,这些特点决定了数据仓库的系统设计不能采用同开发传统的OLTP数据库一样的设计方法。

(1)安装hive
常规配置,这里不记录安装过程

唯一需要注意的地方是有一个hive.metastroe.dirname属性需要配置
配置的值是hive元数据的存储路径,一般为hdfs文件系统的路径。

安装完成后,需要在mysql中建立配置中指定的数据库并初始化Hive源数据库

(2)安装完成之后就可以启动hive

Hive数据仓库的储存方式

Hive本身是没有专门的数据存储格式,也没有为数据建立索引,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。所以往Hive表里面导入数据只是简单的将数据移动到表所在的目录中 。

Hive主要有四种数据模型:

  • Table(表)
  • External Table(外部表)
  • Partition(分区)
  • Bucket(桶)

(1)表的概念和关系型数据库的表很像,只不过hive中的表的本质是结构化数据,存储在hdfs文件系统的目录中。这个目录就是前文着重要求的metastore的位置,文件就是存在那里的。

(2)外部表顾名思义,就是数据不存放在所属目录中,而是存放在别处。

(3)分区,这个很重要,我觉得分区的存在就是数据仓库与关系型数据库最大的区别,表的每一个分区对应表下的相应目录,所有分区的数据都是存储在对应的目录中。
(4)桶:对指定的列计算其hash,根据hash值切分数据,目的是为了并行,每一个桶对应一个文件(注意和分区的区别)。

Hive的元数据

Hive的元数据一般都是放在mysql中的,这样的原因是因为Hive的元数据需要不断的更新、修改,而HDFS系统中的文件是多读少改的,不能将Hive的元数据存储在HDFS中。

hive数据的导入导出

导入

导入的方式有两种

  • 从本地导入数据
  • 从HDFS导入数据

(1)从本地向hive导入数据
语法:

load data local
inpath '/opt/dataaplace/...'
(overwrite) into table tablename 
partition (partitionfield = xxx);

load data:表示导入数据

local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表

partition (…)表示指定导入数据的分区字段

overwrite表示覆盖写入,如果没有则是追加写入

例子:

load data local
inpath '/opt/data/StudentId.txt'
overwrite into table Student;

(2) 加载HDFS文件到hive中
语法:

load data 
inpath '/root/data/...'
(overwrite) into table tablename 
partition (partitionfield = xxx);

不加local默认从hdfs中导入数据

hive创建表

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

前半部分和mysql的建表语句一样,后半部分是指定表的分隔符。

  • 插入数据
insert into table tablename values(1,"zhangsan"),(2,"lisi");

insert into:以追加数据的方式插入到表

insert overwrite into table tablename values(1,"zhangsan"),(2,"lisi");

加了overwrite 则是覆盖原来的表然后写入

  • 根据查询结果覆盖写入
insert overwrite table tablename values(3,"wangwu")
select id,name from tablename where id = 1;
  • 创建表时通过Location指定加载数据路径
create table tablename(id int, name string
)
row format delimited fields terminated by '\t'
location '/root/hive/wirehouse/...';

location 指定的是hdfs中的路径

数据导出

参考博客:添加链接描述

# 1)将查询的结果导出到本地(只能overwrite,不能into,否则会报错)
insert overwrite local directory '/opt/module/hive/datas/export/student' select * from student;# 2)将查询的结果格式化导出到本地(所有的insert语句都会跑MR)
insert overwrite local directory '/opt/module/hive/datas/export/student1' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'select * from student;# 3)将查询的结果导出到HDFS上(没有local)(是复制,原来的文件还在)
insert overwrite directory '/user/qinjl/student2'ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' select * from student;

注意:insert 导出,导出的目录不用自己提前创建,hive会帮我们自动创建,但是由于是overwrite,所以导出路径一定要写具体,否则很可能会误删数据。

  • Hadoop命令也可以导出数据到本地
 dfs -get /user/hive/warehouse/student/student.txt/opt/module/hive/datas/export/student3.txt;
  • Hive Shell 命令导出
hive_dir/bin/hive -e 'select * from ods.order_info;' >> 
/opt/module/datas/order_info.txt
  • hive表也可以通过export 导入到hdfs上
export table ods.user_info to /user/hive/warehouse/user_info;

相关文章:

如何构建Hive数据仓库Hive 、数据仓库的存储方式 以及hive数据的导入导出

什么是Hive hive是基于Hadoop的一个数据仓库工具,可以将结构化数据映射为一张表。 hive支持使用sql语法对存储的表进行查询 (本质上是把sql转成mapreduce的任务执行) Hive有三个特点: hive所存储的数据是放在HDFS文件系统中的h…...

【Linux】软件管理器yum和编辑器vim

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、Linux下安装软件的方案1.1 源代码安装1.2 rpm安装1.3 yum安装 二、Linux软件…...

怎么才能确定螺栓是拧紧了——SunTorque智能扭矩系统

螺栓拧紧的标准并非仅仅依赖于螺栓的外观,而是依赖于几个关键因素,包括扭矩、预紧力和材料疲劳等。下面SunTorque智能扭矩系统和大家将详细讨论这些因素,并给出如何判断螺栓是否已经拧紧的方法。 SunTorque智能扭矩系统 首先,让我…...

西门子S120故障报警F30003的解决办法总结

西门子S120故障报警F30003的解决办法总结 如下图所示,压机在回程时突然出现报警,故障代码为:30003, 如下图所示,查找手册可以看到F30003的报警分析为:直流母线欠压 如下图所示,本来想测量输入端…...

探索vue框架的世界: 内部、外部样式和内联样式动态绑定的方法

在实际项目中,经常会遇到这样的场景,可以通过逻辑层中设定的变量,在视图层中来呈现不同的样式,那么这种动态绑定样式的方式如何实现呢? 本篇文章,博主将和大家分享动态绑定内联样式style 和 动态绑定内部和…...

代码随想录算法训练营第三十八天|动态规划|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

理论基础 文章 说实话,没做过题连理论基础都看不懂 1 确定dp数组(dp table)以及下标的含义 2 确定递推公式 3 dp数组如何初始化 4 确定遍历顺序 5 举例推导dp数组 这道题目我举例推导状态转移公式了么? 我打印dp数组的日志了么&…...

运维知识点-JBoss

JBoss 介绍介绍 JBoss是一个基于J2EE的开放源代码的应用服务器,也是一个运行EJB(Enterprise JavaBean)的容器和服务器。它支持EJB 1.1、EJB 2.0和EJB3的规范,体现了J2EE规范中最新的技术。JBoss遵循LGPL许可,可以在任何商业应用中免费使用,并且由开源社区开发,这使得JB…...

HarmonyOS—配置编译构建信息

在进行应用/服务的编译构建前,需要对工程和编译构建的Module进行设置。API Version 9、API Version 8与API Version 4~7的构建体系不同,因此在设置编译构建信息时也存在差异: API Version 9:需要对构建配置文件、构建脚本、应用依…...

Chrome浏览器好用的几个扩展程序

Chrome好用的扩展程序 背景目的介绍JsonHandle例子未完待续。。。。。。 背景 偶然在往上看到Chrome有很多好用的扩展程序,比较好用,因此记录下比较实用的扩展程序。 目的 记录Chrome浏览器好用的插件。 介绍 JsonHandle下载以及无法扩展插件的解决…...

Enzo Life Sciences Cortisol(皮质醇) ELISA kit

皮质醇又称为氢化可的松,是一种由胆固醇合成的类固醇激素。它是肾上腺皮质产生和分泌的主要糖皮质激素。皮质醇在血液中以游离皮质醇的形式存在,或与皮质类固醇结合球蛋白(CBG)结合。皮质醇水平在早上7点左右最高,晚上最低。皮质醇可以调节新…...

面试经典150题 -- 二分查找 (总结)

总的链接 : 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 二分算法模板 : 详见 : 基础二分学习笔记-CSDN博客 35 . 搜索插入位置 链接 : . - 力扣(LeetCode) 思路 : 用二分查找第一个>t…...

蓝牙耳机怎么选择比较好?2024年热门机型推荐大揭秘!

​蓝牙耳机已经成为了我们日常生活中不可或缺的一部分,随着技术的发展,人们对蓝牙耳机的要求也在不断提升,不仅希望音质出色,还希望能够在不同的场景下使用。然而,如何挑选一款适合自己的蓝牙耳机却是一门学问。今天&a…...

强制Unity崩溃的两个方法

在Unity中,这两种方法都可以用于强制使应用程序崩溃,但它们的作用略有不同: Application.ForceCrash(0); 这个方法会强制应用程序崩溃,并且参数传入的是一个整数值。当参数为0时,它会导致应用程序崩溃并显示一个“Acce…...

中间件 | Redis - [big-key hot-key]

INDEX 1 big-keyhot-key 1 big-key 分类 字符串型 big-key:字符串最大可以到 512M集合型 big-key:集合个数可以到 2^23 问题 内存空间不均匀指令耗时增加:redis 是单线程的,部分操作的时间复杂度是 O(n) 的,big-ke…...

STM32基础--自己构建库函数

什么是 STM32 函数库 固件库是指“STM32 标准函数库”,它是由 ST 公司针对 STM32 提供的函数接口,即API (Application Program Interface),开发者可调用这些函数接口来配置 STM32 的寄存器,使开发人员得以脱离最底层的寄存器操作…...

网站被插入虚假恶意链接怎么办?

在当前的电信和网络环境中,诈骗案件频发,许多受害者不幸上当,主要原因是他们点击了诈骗者发送的假链接。这些诈骗网站经常模仿真实网站的外观,使人难以分辨真伪。那么,我们应如何鉴别这些诈骗链接呢? 下面…...

ThreeJs限制模型拖动的范围

之前有讲过ThreeJs中对模型的拖动功能,使用DragControl组件,将模型放到组件的集合中,就可以拖动点击的模型了,这节细化下怎么控制拖动,比如之拖动z轴,或者限制拖动x轴的范围在某个区间: 首先还是…...

关于JVM的小总结(待补充)

JVM组成及他们之间的关系 装载类子系统字节码执行引擎运行时数据区 装载类子系统 类加载器字节码调节器类加载运行时数据区 字节码执行引擎 运行时数据区 线程私有 虚拟机栈本地方法栈程序计数器 线程共享 堆方法区(元空间)...

day37 贪心算法part6

738. 单调递增的数字 中等 提示 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 不知道怎么讲思路……以9287举例&#xff0c;…...

38女神节:剧情热梗小游戏新品!预售1折秒杀,手慢无

抖音热剧情热梗小游戏《逆袭大冒险》登录 Cocos Store 预售开启&#xff01;游戏包含 20剧情 40 关卡&#xff0c;先来看下视频吧&#xff01; 游戏内嵌多种小游戏玩法&#xff0c;是不是很有亲切感呢&#xff1f;抽针、流体、重力 3.8女神节特价预售 欢迎加入迷萌游戏《逆袭大…...

岩土工程监测仪器振弦采集仪的发展历程与国内外研究现状

岩土工程监测仪器振弦采集仪的发展历程与国内外研究现状 岩土工程监测仪器河北稳控科技振弦采集仪是用于测量土体或岩石地层的力学性质、地层结构、地下水位等参数的一种仪器设备。它通过振动在地下传播的声波信号的传播速度和特性&#xff0c;来推断地层的物理性质。以下是对…...

Git 掌握

目录 一、前言 二、centos安装Git 三、Git基本操作 (1) 创建Git本地仓库 (2) 配置Git (3) 认识工作区&#xff0c;暂存区&#xff0c;版本库 四、添加文件 五、查看.git文件 六、修改文件 七、版本回退 八、撤销修改 (1) 场景一 对于还没有add的代码 (2) 场景二 已…...

面试题之——事务失效的八大情况

事务失效的八大情况 一、非public修饰的方法 Transactional注解只能在在public修饰的方法下使用。 /*** 私有方法上的注解&#xff0c;不生效&#xff08;因私有方法Spring扫描不到该方法&#xff0c;所以无法生成代理&#xff09;*/ Transactional private boolean test() …...

一些硬件知识(六)

防反接设计&#xff1a; 同步电路和异步电路的区别: 同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源&#xff0c;因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。 异步电路:电路没有统一的时钟&#xff0c;有些触发器的时钟输入端与时钟脉冲源相连…...

前端React篇之哪些方法会触发 React 重新渲染?重新渲染 render 会做些什么?

目录 哪些方法会触发 React 重新渲染&#xff1f;重新渲染 render 会做些什么&#xff1f;setState()案例需求总结 forceUpdate()案例需求总结 props改变案例需求总结 context改变案例需求总结 哪些方法会触发 React 重新渲染&#xff1f;重新渲染 render 会做些什么&#xff1…...

PHP伪协议是什么?

PHP伪协议是一种特殊的URL协议&#xff0c;它允许PHP直接从PHP内部生成数据或者访问PHP自身处理的数据流&#xff0c;而不需要外部资源。这些协议是由PHP解释器内部定义和处理的&#xff0c;不同于HTTP、FTP、HTTPS等标准网络协议。下面是PHP伪协议的说明&#xff1a; 1. file…...

npm使用

要查看当前 npm 使用的镜像源地址&#xff0c;你可以使用以下命令&#xff1a; npm get registry这个命令会输出当前 npm 配置的镜像源地址。如果你想查看所有可用的镜像源列表&#xff0c;可以使用 nrm 这个工具&#xff0c;它是一个 npm 源管理器&#xff0c;可以帮助你查看…...

美国国家安全局(NSA)和美国政府将Delphi/Object Pascal列为推荐政府机构和企业使用的内存安全编程语言

上周&#xff0c;美国政府发布了《回到构建块&#xff1a;通往安全和可衡量软件的道路》的报告。本报告是美国网络安全战略的一部分&#xff0c;重点关注多个领域&#xff0c;包括内存安全漏洞和质量指标。 许多在线杂志都对这份报告发表了评论&#xff0c;这些杂志强调了对 C…...

C++中的内部类

一、内部类的概念 如果一个类定义在另一个类的内部&#xff0c;那么这个类就叫做内部类。&#xff08;内部类其实和一个独立的类没有区别&#xff0c;只是它会受到外部类访问限定符以及类域的限制&#xff0c;且是外部类的友元&#xff09; 如果B类是A类的内部类&#xff0c;…...

华为“仓颉”不是中文编程:中文编程早有所属,势如破竹

“何时能见证中国自主研发的编程语言崛起&#xff1f;”这是我们这些对IT生态心怀关切的人常常深思的问题。 语言&#xff0c;作为文化的灵魂&#xff0c;总是与特定的环境和人群紧密相连。无论是中文还是英语&#xff0c;它们都不仅仅是交流的工具&#xff0c;更是各自文化背…...