Hadoop yixing(移行),新增表字段,删除表字段,修改存储格式

Hadoop yixing(移行),新增表字段,删除表字段,修改存储格式

一、hadoop中修改存储格式,比如从 textfile 转化为 orc 格式,表中的数据的组织形式要重新改变,就要将重新创建新格式的表将原来的数据按照新的格式插入到新表中

​ 这个时候我们不能直接对元数据修改一下就完事了,就像是一堆砖头,之前你说你按照长方体去摆放,后来你说要按圆柱体去摆放,你不能说只是动动嘴就完事了,是不是要把之前的砖头按照圆柱体的规划一个一个摆好。

​ 再此之前我们有必要认识一下 hadoop 中的存储格式。

1)行式存储及列式存储

行式存储(textfile、sequencefile、avro)

1.行式存储

​ 行式存储就是每一行的所有数据存储在一个 block 中。

优点:

  • 因为每一行的所有字段都存在一起,因此对数据进行插入(INSERT)和修改(UPDATE)操作很方便。
  • 整表查询比较方便,可以很快将整张表组装出来。select * from table

缺点:

  • 查询(select)时如果涉及到某条数据,需要把该行数据所有内容都读取到内存中,即使只有 select 一两个字段也要把整行数据都读进来。读取数据的时候硬盘寻址范围很大。
  • 要加速查询的话需要建立索引,建立索引需要花很多时间。
  • 空值也要占固定的空间。

应用的场景:

行式存储用于存储关系型数据,用于使用数据的时候需要经常用的数据之间的依赖关系的场景,即读取的时候需要整行数据或者整行中大部分列的数据,需要经常用到插入、修改操作,比如存储用户的注册信息等。

2.列式存储

列式存储就是每一列的所有数据存在一起,不同列之间可以分开存储。

优点:

  • 每一列单独存储,因此仅select 个别列的时候,可以仅读取需要的那几个列,相当于为每一列都建立索引。因此磁盘寻道范围小。
  • 数据压缩。列式存储的时候可以为每一列创建一个字典,存储的时候就仅存储数字编码即可,降低了存储空间的需求

缺点:

  • select 完成时,被选中的数据需要重新组装
  • 插入(insert )和修改(update)操作比较麻烦。

应用场景:

列式存储适合分布式数据库和数据仓库,适合于对大量数据进行统计分析,列于列之间关联性不强,仅进行插入和读取操作的场景,如网站流量统计、用户行为分析等。

2)、具体的文件格式
1. TextFile

​ 默认格式,存储方式为行存储,数据不做压缩,磁盘开销大,数据解析开销大。可结合 Gzip、Bzip2 使用(系统自动检查,执行查询时自动解压),但使用 这种方式,压缩后的文件不支持 split,Hive 不会对数据进行切分,从而无法对数据进行并行操作。并且在反序列化过程中,必须逐个字符判断是不是分隔符和行结束符,因此反序列化开销会比 SequenceFile 高几十倍 。

2. SequenceFile

SequenceFile 是 Hadoop API 提供的一种二进制文件支持,存储方式为行存储,其具有使用方便、可分割、可压缩的特点。SequenceFile 支持三种压缩选择:NONE,RECORD,BLOCK。Record 压缩率低,一般建议使用 BLOCK 压缩。优势是文件和 hadoop api 中的 MapFile 是相互兼容的 。

3. Avro

Avro格式是Hadoop的一种基于行的存储格式,被广泛用作序列化平台。Avro格式以JSON格式存储模式,使其易于被任何程序读取和解释。数据本身以二进制格式存储,使其在Avro文件中紧凑且高效。Avro格式是语言中立的数据序列化系统。它可以被多种语言处理(目前是C、C++、C#、Java、Python和Ruby)。Avro格式的一个关键特性是对随时间变化的数据模式的强大支持,即模式演变。Avro处理模式更改,例如缺少字段、添加的字段和更改的字段。Avro格式提供了丰富的数据结构。例如,您可以创建包含数组、枚举类型和子记录的记录。

4. RCFile

RCFile是为基于MapReduce的数据仓库系统设计的数据存储结构。它结合了行存储和列存储的优点,可以满足快速数据加载和查询,有效利用存储空间以及适应高负载的需求。RCFile是由二进制键/值对组成的flat文件,它与sequence file有很多相似之处,在数仓中执行分析时,这种面向列的存储非常有用。当我们使用面向列的存储类型时,执行分析很容易。缺点是RC不支持schema扩展,如果要添加新的列,则必须重写文件,这会降低操作效率。

5. OrcFile

Apache ORC是Apache Hadoop生态系统面向列的开源数据存储格式,它与Hadoop环境中的大多数计算框架兼容,ORC代表“优化行列”,它以比RC更为优化的方式存储数据,提供了一种非常有效的方式来存储关系数据,然后存储RC文件。ORC将原始数据的大小最多减少75%,数据处理的速度也提高了。

6. Parquet

与以行方式存储数据的传统方法相比,Parquet文件格式在存储和性能方面更高效。这对于从“宽”(具有许多列)表中读取特定列的查询特别有用,因为只读取需要的列,并且最小化 IO。Parquet的独特功能之一是它也可以以柱状方式存储具有嵌套结构的数据。这意味着在 Parquet 文件格式中,即使是嵌套字段也可以单独读取,而无需读取嵌套结构中的所有字段。Parquet 格式使用记录分解和组装算法以柱状方式存储嵌套结构。

3)压缩算法

二、存量表修改存储格式如何操作

假如之前一张表 table1 是 textfile 格式的,因为服务器这边资源紧张要改为 orc 格式的

算法:

首先,我们要先建一张表table1_2407bak2 存储格式定义为 orc

开启动态分区,

将历史分区中的数据插入到table1_2407bak2表中最好一段 sql 扫描分区数不要超过 200 个分区。

然后就是将table1改名为table1_2407bak

将table1_2407bak2改名为table1 完成数据存储格式的改变,table1_2407bak是按照之前的存储格式进行存储的备份数据

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

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

相关文章

中信证券:A股下半年将迎来年度级别上涨行情的起点

中信证券认为, 过去3年压制A股表现的经济动能转换,资本市场生态,中美战略博弈这三大叙事都将迎来重大拐点,随着政策、价格、外部三类信号逐步验证,2024年下半年A股市场将迎来年度级别上涨行情的起点 过去3年压制A股表…

鸿蒙开发接口安全:【@ohos.userIAM.userAuth (用户认证)】

用户认证 说明: 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import userIAM_userAuth from ohos.userIAM.userAuth;完整示例 // API version 6 import userIAM_userAuth from ohos.use…

最小栈、栈的弹出(C++)

1.最小栈 思路分析: 代码: class MinStack { public:MinStack() {}void push(int val) {st.push(val);//两种情况需要更新最小值//1.最小栈为空(就是存最小值的那个栈)//2.插入的值小于或等于最小栈的栈顶元素if(minstack.empty()||minstack.top()>…

C++--DAY3

思维导图 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数。 #include <iostream>using namespace std; class …

006 RabbitMQ

文章目录 为什么要使用RabbitMQ异步处理解耦流量削峰数据同步 使用RabbitMQ的场景异步处理应用解耦数据同步流量削峰 RabbitMQ有哪些工作模式简单模式&#xff1a;Work模式&#xff1a;订阅模式&#xff08;Publish/Subscribe&#xff09;&#xff1a;路由模式&#xff08;Rout…

SOCKS 代理 和 HTTP 代理, WebSocket

SOCKS 代理 和 HTTP 代理 的区别 SOCKS 代理 和 HTTP 代理 都是代理服务器&#xff0c;它们充当客户端和目标服务器之间的中介&#xff0c;但它们的工作方式和应用场景有所不同。 1. SOCKS 代理&#xff1a; 工作原理&#xff1a; SOCKS 代理是一种更底层的代理&#xff0c;…

查看docker中各个容器所占的资源

要查看Docker中的每个容器占用的资源&#xff0c;可以使用docker stats命令。这个命令提供了容器的实时资源使用统计&#xff0c;包括内存使用情况。以下是如何使用docker stats命令的示例&#xff1a; docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsa…

【QT5】<总览三> QT常用控件

文章目录 前言 一、QWidget---界面 二、QPushButton---按钮 三、QRadioButton---单选按钮 四、QCheckBox---多选、三选按钮 五、margin&padding---边距控制 六、QHBoxLayout---水平布局 七、QVBoxLayout---垂直布局 八、QGridLayout---网格布局 九、QSplitter---…

docker容器内无法使用命令问题

更换国内源 /etc/apt/source.list 可以先apt-get install vim #进入容器 docker exec -it 容器ID /bin/bashmv /etc/apt/source.list /etc/apt/source.list.bd vim /etc/apt/source.list#此处我使用腾讯云的源 deb http://mirrors.cloud.tencent.com/debian/ buster main non…

React@16.x(20)渲染流程-首次渲染

目录 1&#xff0c;渲染的前置知识点1.1&#xff0c;React 元素1.2&#xff0c;React 节点1.3&#xff0c;节点类型1.4&#xff0c;真实DOM 2&#xff0c;首次渲染2.1&#xff0c;根据参数创建节点2.2&#xff0c;不同节点&#xff0c;有不同处理2.3&#xff0c;生成虚拟DOM树2…

course-nlp——2-svd-nmf-topic-modeling

本文参考自https://github.com/fastai/course-nlp。 使用NMF and SVD进行主题建模 问题 主题建模是开始学习 NLP 的一种有趣方式。我们将使用两种流行的矩阵分解技术。考虑最极端的情况——使用两个向量的外积重建矩阵。显然&#xff0c;在大多数情况下&#xff0c;我们无法…

《微服务大揭秘:SpringBoot与SpringCloud的魔法组合》

加入我们的探险队伍&#xff0c;一起深入SpringBoot与SpringCloud构建的微服务世界。以轻松幽默的笔触&#xff0c;带你一步步揭开微服务架构的神秘面纱&#xff0c;从服务发现的智能地图Eureka&#xff0c;到API网关Zuul的城市门卫&#xff0c;每一个环节都充满了惊喜。不仅如…

2. JavaScript 语法和数据结构

1. 基础 JavaScript不区分大小写 2. 注释 // 单行注释/* 这是一个更长的&#xff0c;多行注释 *//* 然而&#xff0c;你不能&#xff0c;/* 嵌套注释 */ 语法错误 */3. 声明 var 声明一个变量&#xff0c;可选初始化一个值。 let 声明一个块作用域的局部变量&#xff0c;可…

蒸汽流量积算仪数采上云案例

蒸汽流量积算仪数采上云案例 背景需求 中晟环境项目&#xff0c;蒸汽流量积算仪数据采集上云。传统方案&#xff0c;采用人工抄表方式&#xff0c;人工成本高&#xff0c;记录繁琐&#xff0c;数据记录常常出现记录错乱、模糊的情形。根据现有需求&#xff0c;实现积算仪的数…

6.4分享会

介绍 严格意义上讲&#xff0c;我们在 JavaScript 阶段学习的知识绝大部分属于 ECMAScript 的知识体系&#xff0c;ECMAScript 简称 ES 它提供了一套语言标准规范&#xff0c;如变量、数据类型、表达式、语句、函数等语法规则都是由 ECMAScript 规定的。浏览器将 ECMAScript 大…

Wi-Fi 6E vs. Wi-Fi 7: Which is the Best Fit for Your Infrastructure?

Wi-Fi 6E vs. Wi-Fi 7: Which is the Best Fit for Your Infrastructure? With the rapid advancement of wireless technology, organizations face a critical decision: should they adopt Wi-Fi 6E now or wait for Wi-Fi 7? This decision impacts various aspects of …

短剧市场大爆炸:小米和华为的亿万争夺战,谁能笑到最后?

在数字化媒体的浪潮中&#xff0c;内容消费模式正经历着翻天覆地的变化。短视频的兴起引领了一种全新的娱乐方式&#xff0c;而短剧作为其衍生形式&#xff0c;正逐渐成为各大科技巨头争夺的新战场。 小米和华为&#xff0c;作为中国科技界的两大巨头&#xff0c;也在这一新兴…

关于焊点检测SJ-BIST)模块实现

关于焊点检测SJ-BIST)模块实现 语言 :Verilg HDL 、VHDL EDA工具:ISE、Vivado、Quartus II 关于焊点检测SJ-BIST)模块实现一、引言二、焊点检测功能的实现方法(1) 输入接口(2) 输出接口(3) 模块实现核心状态图(4) 模块实现原理图关键词: Verilog HDL,焊点检测功能…

欲除烦恼须无我,各有前因莫羡人

欲除烦恼须无我&#xff0c;各有前因莫羡人

深度学习-09-让函数更简单

深度学习-09-让函数更简单 本文是《深度学习入门2-自製框架》 的学习笔记&#xff0c;记录自己学习心得&#xff0c;以及对重点知识的理解。如果内容对你有帮助&#xff0c;请支持正版&#xff0c;去购买正版书籍&#xff0c;支持正版书籍不仅是尊重作者的辛勤劳动&#xff0c;…