Hive其四,Hive的数据导出,案例展示,表类型介绍

目录

一、Hive的数据导出

1)导出数据到本地目录

2)导出到hdfs的目录下

3)直接将结果导出到本地文件中

二、一个案例

三、表类型

1、表类型介绍

2、内部表和外部表转换

3、两种表的区别

4、练习


一、Hive的数据导出

数据导出的分类:

1. 从hive表中导出本地文件系统中(目录、文件)

2. 从hive表中导出hdfs文件系统中

3. hive表中导出到其它hive表中

1)导出数据到本地目录

insert overwrite local directory '/root/out/00' select * from t_user;这个00不是文件名,而是文件夹的名字,没有可以自动创建

2)导出到hdfs的目录下

insert overwrite directory '/root/out/00' select * from t_user;

假如你导出的数据想要一个分隔符,比如 逗号

insert overwrite directory '/root/out/00' 
row format delimited fields terminated by ','
select * from t_user;

3)直接将结果导出到本地文件中

hive -e "sql语句"   不需要进入hive,直接执行hive的语句
hive -e "select * from  databaseName.t_user" >> /root/out/a.txt
hive -e "use databaseName;select * from  t_user" >> /root/out/a.txt

制表符就是 Tab 键,Tab 键就是 \t

二、一个案例

数据整理:emp.txt

7369,SMITH,CLERK,7902,1980-12-17,800,null,20
7499,ALLEN,SALESMAN,7698,1981-02-20,1600,300,30
7521,WARD,SALESMAN,7698,1981-02-22,1250,500,30
7566,JONES,MANAGER,7839,1981-04-02,2975,null,20
7654,MARTIN,SALESMAN,7698,1981-09-28,1250,1400,30
7698,BLAKE,MANAGER,7839,1981-05-01,2850,null,30
7782,CLARK,MANAGER,7839,1981-06-09,2450,null,10
7788,SCOTT,ANALYST,7566,1987-04-19,3000,null,20
7839,KING,PRESIDENT,null,1981-11-17,5000,null,10
7844,TURNER,SALESMAN,7698,1981-09-08,1500,0,30
7876,ADAMS,CLERK,7788,1987-05-23,1100,null,20
7900,JAMES,CLERK,7698,1981-12-03,950,null,30
7902,FORD,ANALYST,7566,1981-12-02,3000,null,20
7934,MILLER,CLERK,7782,1982-01-23,1300,null,10
3423,cfxj,MANAGER,8899,2022-01-01,50000,100000,40

根据数据的字段和格式,建表:

create table emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal int,
comm int,
deptno int
)
row format delimited 
fields terminated by ',';

加载数据:

load data local inpath "/home/hivedata/emp.txt" into table emp;

编写指标:

1、统计有领导的员工有哪些?
不完美
select * from emp where mgr is not null;
完美的写法:
select * from emp e1 where exists (select * from emp e2 where e2.empno = e1.mgr);还有其他写法:
select * from emp where mgr in (select distinct empno from emp);2、统计每个部门的员工的总工资和总薪水是多少?
select sum(sal),sum(comm+sal),deptno from emp group by deptno;8750    NULL    10
10875   NULL    20
9400    7800    30
50000   150000  40
Time taken: 1.965 seconds, Fetched: 4 row(s)null + 任何数字 结果为null
需要一个函数 IFNULL(mysql中的函数),在hive中的对应的函数是nvl
select sum(sal),sum(nvl(comm,0)+sal),deptno from emp group by deptno;

Hive中的函数是非常重要的,课下多留意,积累!

三、表类型

1、表类型介绍

内部表:

表面来看,我们建的所有的表,默认都是内部表,内部表又叫做管理表,它的位置也很固定/user/hive/warehouse下面。

外部表:

创建的时候需要加关键字external 修饰,而且,外部表它的数据的存储位置可以不在/user/hive/warehouse,可以指定位置。

建表的语法格式:

 create external table tableName(id int,name string) [location 'path'];

举例:

create external table t_user7(
id int,
name string
)
row format delimited
fields terminated by ','
location '/publicData'这个location 是本地的意思还是hdfs的路径呢?答案是必须在hdfs上。

2、内部表和外部表转换

内部表转外部表

desc extended t_user; 查看表结构的详细信息

alter table tableName set tblproperties('EXTERNAL'='TRUE');

注意:内部表转外部表,true一定要大写;

外部表转内部表

alter table tableName set tblproperties('EXTERNAL'='false');

说明:false不区分大小

3、两种表的区别

用的最多的都是外部表,因为可以分析数据(OLAP)。

OLAP: 为分析而生的数据库 A(分析)

OLTP: 存储数据,保证数据的安全。 T(事务的意思)

最大的区别就是删除表的时候,内部表会删除元数据和真正的hdfs上的数据。而外部表只删除元数据。

思考:为什么这么做?

Hive是一个数据分析的工具,存储数据不是它的本意。

假如一个人,将数据上传至hdfs,这个数据量很大,一般不挪动位置,你可以建一个外部表数据的位置指向hdfs的某个文件夹,然后就可以分析了。

/home a.txt 2G

建一个外部表,指向/home/a.txt , 分析完毕之后,删除表就可以了,干嘛要删除数据,没必要。--用后即焚!

微信小程序--> 阅后即焚。

1) 内部表和外部表在创建时的差别

就差两个关键字,EXTERNAL 和 LOCATION 举例:

- 内部表 -- CREATE TABLE T_INNER(ID INT);

- 外部表 -- CREATE EXTERNAL TABLE T_OUTER(ID INT) LOCATION 'HDFS:///AA/BB/XX';

2) Hive表创建时要做的两件事:

1、在hdfs下创建表目录

2、在元数据库mysql创建相应表的描述数据(元数据)

3) drop时有不同的特性:

1、drop时,元数据都会被清除

2、drop时,内部表的表目录会被删除,但是外部表的表目录不会被删除。

4) 使用场景

内部表: 平时用来测试或者少量数据,并且自己可以随时修改删除数据.

外部表:使用后数据不想被删除的情况使用外部表(推荐使用)所以,整个数据仓库的最底层的表使用外部表。

4、练习

创建不存在的文件夹  
hdfs dfs -mkdir -p /user/hdfs/source/out_table
接着创建一个外部表
create external table out_table (id int,name string
)
row format delimited
fields terminated by ','
location '/user/hdfs/source/out_table';加载数据:load data local inpath '/home/hivedata/user.txt' into table out_table;

查看数据存放的位置:

drop table out_table;

发现数据依然存在:

假如我再创建一个表,数据指向这个文件夹,表中是否会有数据?

create external table student (sid int,sname string
)
row format delimited
fields terminated by ','
location '/user/hdfs/source/out_table';

查看表数据,数据即可出现,根本不需要导入操作

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

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

相关文章

基于WEB的房屋出租管理系统设计

摘 要 随着城市化程度的推进,越来越多的人涌入城市,同时也带来的旺盛的租房需求,传统的房屋出租管理依赖人 工记录的方式难以满足人们对房屋出租管理的需求。因此,本文根据房屋出租信息化的需求设计一款基于房屋出租 的管理系统。…

操作系统(26)数据一致性控制

前言 操作系统数据一致性控制是确保在计算机系统中,数据在不同的操作和处理过程中始终保持正确和完整的一种机制。 一、数据一致性的重要性 在当今数字化的时代,操作系统作为计算机系统的核心,负责管理和协调各种资源,以确保计算机…

C语言项目 天天酷跑(上篇)

前言 这里讲述这个天天酷跑是怎么实现的,我会在天天酷跑的下篇添加源代码,这里会讲述天天酷跑这个项目是如何实现的每一个思路,都是作者自己学习于别人的代码而创作的项目和思路,这个代码和网上有些许不一样,因为掺杂了…

Docker数据库的主从复制

有很多种方式,我这里使用的是docker镜像配置两个mysql容器做主从复制,一个做主服务器,另一个做从服务器,前提是有docker。 创建容器: 第一个容器: mkdir mysql cd mysql docker run -id \ -p 3307:3306 \ --namels \ -v /root/mysql/conf:/etc/mysql/co…

CH32V307VCT6---工程template创建

一、硬件:沁恒官网申请的CH32V307VCT6开发板 二、开发环境:Mounriver 三、最终效果 1.PB9连接LED1,使其闪烁 2.OLED屏幕显示:软件IIC,PB10----SDA,PB11---SCL 3.工程链接:CH32V307VCT6 lo…

mac中idea菜单工具栏没有git图标了

1.右击菜单工具栏 2.选中VCS,点击添加 3.搜索你要的工具,选中点击确定就添加了 4.回到上面一个界面,选中你要放到工具栏的工具,点击应用就好了 5.修改图标,快捷键或者右击选中编辑图标 6.选择你要的图标就好了

使用 Python 创建多栏 Word 文档 – 详解

目录 引言 一、工具与安装 二、Python 在 Word 中创建简单的多栏布局 三、Python 在 Word 文档的栏间添加分隔线 四、Python 从Word文档的指定位置开启多栏设置 五、Python 为多栏 Word 文档的各栏添加页码 引言 在文档设计中,排版不仅决定了内容的呈现方式&…

JZ31 栈的压入、弹出序列

题目来源:栈的压入、弹出序列_牛客题霸_牛客网 题目:如下 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序&#xf…

Spring源码_05_IOC容器启动细节

前面几章,大致讲了Spring的IOC容器的大致过程和原理,以及重要的容器和beanFactory的继承关系,为后续这些细节挖掘提供一点理解基础。掌握总体脉络是必要的,接下来的每一章都是从总体脉络中, 去研究之前没看的一些重要…

【Linux】进程间通信 -> 匿名管道命名管道

进程间通信的目的 数据传输:一个进程许需要将它的数据发送给另外一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件(如进程终止时要通知父进程…

大模型-使用Ollama+Dify在本地搭建一个专属于自己的聊天助手与知识库

大模型-使用OllamaDify在本地搭建一个专属于自己的知识库 1、本地安装Dify2、本地安装Ollama并解决跨越问题3、使用Dify搭建聊天助手4、使用Dify搭建本地知识库 1、本地安装Dify 参考往期博客:https://guoqingru.blog.csdn.net/article/details/144683767 2、本地…

黑盒测试/白盒测试知识总结

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 对于很多刚开始学习软件测试的小伙伴来说,如果能尽早将黑盒、白盒测试弄明白,掌握两种测试的结论和基本原理,将对自己后期的学习…

数据结构之线性表之顺序表

定义: 由n(n>0)个数据特性相同的元素构成的有限序列称为线性表 简单来说n个相同数据类型的数据组wsw合在一起的这么一个集合就是一个线性表 线性表包括顺序表和链表 1. 顺序表(我们所有的代码实现都用函数来封装&#xff09…

ReactPress 1.6.0:重塑博客体验,引领内容创新

ReactPress 是一个基于Next.js的博客&CMS系统, Github项目地址:https://github.com/fecommunity/reactpress 欢迎Star。 体验地址:http://blog.gaoredu.com/ 今天,我们自豪地宣布ReactPress 1.6.0版本的正式发布,…

(echarts)数据地图散点类型根据条件设置不同的标记图片

(echarts)数据地图散点类型根据条件设置不同的标记图片 1.用在线工具将本地图片转化base64格式 data(){return { base64Img:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQ...",} }在线转换地址:https://www.jyshare.com/front-end/59/ 2.symbol属…

傅里叶变换原理

本文学习自YuHWEI最浅显易懂的傅里叶变换公式和原理_采样率和信号频率计算镜像频率-CSDN博客 本文会对公式实现 更加详细的补充 连续与离散 一般人们口中所说的傅里叶变换都是指连续傅里叶变换,针对的是连续时域信号. 对于计算设备的信号处理,因为采样…

STM32高级 以太网通讯案例2:搭建TCP服务端

需求描述 在TCP通讯的时候,客户端必须主动联系服务器,这样才能实现通讯。服务器与客户端之间的连接是一种长连接,一旦连上一般是不会断开的。 在STM32上启动一个TCP的服务端,在电脑上用TCP客户端去连接服务端。客户端给服务端发…

系统架构师考试 常错题记录 01

1.按照《中华人民共和国著作权法》的权利保护期( )受到永久保护。 A.发表权 B.修改权 C.复制权 D.发行权 正确答案:B 解析:本题考查知识产权法中的《中华人民共和著作权法》保护期限知识点。 《中华人民共和著作权法》中约定署名权…

WebPack3项目升级webpack5的配置调试记录

文章目录 前言一、webpack3环境1.1、知识点记录1.1.1、配置解释1.1.2、webpack与sass版本对应关系1.1.3、CommonJS与ESModule1.1.4、node版本管理nvm1.1.5、sass-loader、sass与node-sass 1.2、其他1.2.1、.d.ts是什么文件1.2.2、react与types/react版本对应关系1.2.3、webpack…

[源码解析] 模型并行分布式训练Megatron (2) --- 整体架构

link [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要0x01 启动 1.1 分布式启动1.2 构造基础 1.2.1 获取模型1.2.2 获取数据集1.2.3 步进函数 1.2.3.1 广播数据0x02 Pretrain0x03 初始化 3.1 …