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

大数据学习(7)-hive文件格式总结

&&大数据学习&&

🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博>主哦🤞


Hive文件格式

为Hive表中的数据选择一个合适的文件格式,对提高查询性能的提高是十分有益的。Hive表数据的存储格式,可以选择text file、orc、parquet、sequence file等。

Text File

文本文件是Hive默认使用的文件格式,文本文件中的一行内容,就对应Hive表中的一行记录。

可通过以下建表语句指定文件格式为文本文件:

create table textfile_table(column_specs)stored as textfile;

ORC

1)文件格式

ORC(Optimized Row Columnar)file format是Hive 0.11版里引入的一种列式存储的文件格式。ORC文件能够提高Hive读写数据和处理数据的性能。

与列式存储相对的是行式存储,下图是两者的对比:

如图所示左边为逻辑表,右边第一个为行式存储,第二个为列式存储。

(1)行存储的特点

查询满足条件的一整行数据的时候,列存储则需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。

(2)列存储的特点

因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。

前文提到的text file和sequence file都是基于行存储的,orc和parquet是基于列式存储的。

每个Orc文件由Header、Body和Tail三部分组成。

其中Header内容为ORC,用于表示文件类型。

Body由1个或多个stripe组成,每个stripe一般为HDFS的块大小,每一个stripe包含多条记录,这些记录按照列进行独立存储,每个stripe里有三部分组成,分别是Index Data,Row Data,Stripe Footer。

Index Data:一个轻量级的index,默认是为各列每隔1W行做一个索引。每个索引会记录第n万行的位置,和最近一万行的最大值和最小值等信息。

Row Data:存的是具体的数据,按列进行存储,并对每个列进行编码,分成多个Stream来存储

Stripe Footer:存放的是各个Stream的位置以及各column的编码信息。

Tail由File Footer和PostScript组成。File Footer中保存了各Stripe的其实位置、索引长度、数据长度等信息,各Column的统计信息等;PostScript记录了整个文件的压缩类型以及File Footer的长度信息等。

在读取ORC文件时,会先从最后一个字节读取PostScript长度,进而读取到PostScript,从里面解析到File Footer长度,进而读取FileFooter,从中解析到各个Stripe信息,再读各个Stripe,即从后往前读。

3)建表语句

create table orc_table(column_specs)stored as orctblproperties (property_name=property_value, ...);

ORC文件格式支持的参数如下:

参数

默认值

说明

orc.compress

ZLIB

压缩格式,可选项:NONEZLIB,SNAPPY

orc.compress.size

262,144

每个压缩块的大小(ORC文件是分块压缩的)

orc.stripe.size

67,108,864

每个stripe的大小

orc.row.index.stride

10,000

索引步长(每隔多少行数据建一条索引)

 Parquet

Parquet文件是Hadoop生态中的一个通用的文件格式,它也是一个列式存储的文件格式。

上图展示了一个Parquet文件的基本结构,文件的首尾都是该文件的Magic Code,用于校验它是否是一个Parquet文件。

首尾中间由若干个Row Group和一个Footer(File Meta Data)组成。

每个Row Group包含多个Column Chunk,每个Column Chunk包含多个Page。以下是Row Group、Column Chunk和Page三个概念的说明:

行组Row Group一个行组对应逻辑表中的若干行 

列块Column Chunk一个行组中一列保存在一个列块中 

Page一个列块的数据会划分为若干个页。 

Footer(File Meta Data)中存储了每个行组(Row Group)中的每个列快(Column Chunk)的元数据信息,元数据信息包含了该列的数据类型、该列的编码方式、该类的Data Page位置等信息。

3)建表语句

Create table parquet_table(column_specs)stored as parquettblproperties (property_name=property_value, ...);

支持的参数如下:

参数

默认值

说明

parquet.compression

uncompressed

压缩格式,可选项:uncompressedsnappygziplzobrotlilz4

parquet.block.size

134217728 

行组大小,通常与HDFS块大小保持一致

parquet.page.size

1048576

页大小

相关文章:

大数据学习(7)-hive文件格式总结

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博>主哦&#x…...

GRU的 电影评论情感分析 - python 深度学习 情感分类 计算机竞赛

1 前言 🔥学长分享优质竞赛项目,今天要分享的是 🚩 GRU的 电影评论情感分析 - python 深度学习 情感分类 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 这…...

kafka简述

前言 ​ 在大数据高并发场景下,当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异。一般选型是Kafka、RocketMQ,这源于这些中间件的高吞吐、可扩展以及可靠…...

《RISC-V体系结构编程与实践》的benos_payload程序——mysbi跳转到benos分析

1、benos_payload.bin结构分析 韦东山老师提供的开发文档里已经对程序的结构做了分析,这里不再赘述,下面是讨论mysbi跳转到benos的问题; 2、mysbi跳转到benos的代码 3、跳转产生的疑问 我认为mysbi.bin最后跳转到0x22000地址处执行&#xff0…...

ad5665r STM32 GD32 IIC驱动设计

本文涉及文档工程代码,下载地址如下 ad5665rSTM32GD32IIC驱动设计,驱动程序在AD公司提供例程上修改得到,IO模拟的方式进行IIC通信资源-CSDN文库 硬件设计 MCU采用STM32或者GD32,GD32基本上和STM32一样,针对ad566r的IIC时序操作是完全相同的. 原理图设计如下 与MC…...

TensorFlow入门(十六、识别模糊手写图片)

TensorFlow在图像识别方面,提供了多个开源的训练数据集,比如CIFAR-10数据集、FASHION MNIST数据集、MNIST数据集。 CIFAR-10数据集有10个种类,由6万个32x32像素的彩色图像组成,每个类有6千个图像。6万个图像包含5万个训练图像和1万个测试图像。 FASHION MNIST数据集由衣服、鞋子…...

CSwin Transformer 学习笔记

Cswin提出了上图中使用交叉形状局部attention,为了解决VIT模型中局部自注意力感受野进一步增长受限的问题,同时提出了局部增强位置编码模块,超越了Swin等模型,在多个任务上效果SOTA(当时的SOTA,已经被SG Fo…...

Linux上通过mysqldump命令实现自动备份

Linux上通过mysqldump命令实现自动备份 直接上代码 #!/bin/bash mysql_user"root" mysql_host"localhost" mysql_port"3306" mysql_charset"utf8mb4"backup_location/home/mysql/mysql_back/sql # 是否开始自动删除过期文件,过期时间…...

v-model与.sync的区别

我们在日常开发的过程中,v-model指令可谓是随处可见,一般来说 v-model 指令在表单及元素上创建双向数据绑定,但 v-model 本质是语法糖。但提到语法糖,这里就不得不提另一个与v-model有相似功能的双向绑定语法糖了,这就是 .sync修饰符。在这里就两者的使用进行一下比较和总结: …...

Linux---进程(1)

操作系统 传统的计算机系统资源分为硬件资源和软件资源。硬件资源包括中央处理器,存储器,输入设备,输出设备等物理设备;软件资源是以文件形式保存在存储器上的成熟和数据等信息。 操作系统就是计算机系统资源的管理者。 如果你的计…...

C# U2Net Portrait 跨界肖像画

效果 项目 下载 可执行文件exe下载 源码下载...

华为云云耀云服务器L实例评测|华为云耀云服务器L实例评测包管理工具安装软件(六)

七、华为云耀云服务器L实例评测包管理工具安装软件: 根据企业级项目架构图所示,本章主要是安装公司企业项目的基本环境LNMP,相关的包管理器Composer、Node、Npm、Yarn安装,评测一下包管理工具安装软件是否存在问题,如果…...

在PYTHON中用zlib模块对文本进行压缩,写入图片的EXIF中,后在C#中读取EXIF并用SharpZipLib进行解压获取压缩前文本

在PYTHON中用zlib模块对文本进行压缩长度,写入图片的EXIF中,并在C#中读取EXIF后用SharpZipLib进行解压缩获取压缩前文本。 PS:当压缩后的字节数组长度为单数时,无法写入EXIF的XPComment中,需要在后面增加一个以utf-8编码的空格&a…...

centos / oracle Linux 常用运维命令讲解

目录 1.shell linux常用目录: 2.命令格式 3.man 帮助 4.提示符 5.echo输出字符串或变量值 6.date显示及设置系统的时间或日期 7.重启系统 8.关闭系统 9.登录注销 10.wget 下载文件 11.ps 查看系统的进程 12.top动态监视进程信息和系统负载等信息 13.l…...

EMNLP 2023 录用论文公布,速看NLP各领域最新SOTA方案

EMNLP 2023 近日公布了录用论文。 开始前以防有同学不了解这个会议,先简单介绍介绍:EMNLP 是NLP 四大顶会之一,ACL大家应该都很熟吧,EMNLP就是由 ACL 下属的SIGDAT小组主办的NLP领域顶级国际会议,一年举办一次。相较于…...

互联网Java工程师面试题·Java 并发编程篇·第三弹

目录 26、什么是线程组,为什么在 Java 中不推荐使用? 27、为什么使用 Executor 框架比使用应用创建和管理线程好? 27.1 为什么要使用 Executor 线程池框架 27.2 使用 Executor 线程池框架的优点 28、java 中有几种方法可以实现一个线程…...

mac jdk的环境变量路径,到底在哪里?

在mac 电脑中,直接执行 java -version 显示Jdk的版本为1.8 然后打印Java环境变量 在终端中执行 echo $JAVA_HOME 1、情况一:发现环境变量是空的 我草,没配置环境变量怎么能使用Java ,和查看jdk版本 2、情况二:环…...

PyQt5 PyQt6 Designer 的安装

pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣(douban) http://pypi.douban.com/simple/ 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/ 中国科学技术大学 http://pypi.mirrors.ustc.…...

数据库:Hive转Presto(四)

这次补充了好几个函数,并且新加了date_sub函数,代码写的比较随意,有的地方比较繁琐,还待改进,而且这种文本处理的东西,经常需要补充先前没考虑到的情况,要经常修改。估计下一篇就可以补充完所有…...

16基于otsuf方法的图像分割,程序已调通,可更换自己的图片进行分割,程序具有详细的代码注释,可轻松掌握。基于MATLAB平台,需要直接拍下。

基于otsuf方法的图像分割,程序已调通,可更换自己的图片进行分割,程序具有详细的代码注释,可轻松掌握。基于MATLAB平台,需要直接拍下。 16matlab图像处理图像分割 (xiaohongshu.com)...

Musicdl革新性全场景音乐解决方案:5个维度揭秘开源音乐下载技术的破局之道

Musicdl革新性全场景音乐解决方案:5个维度揭秘开源音乐下载技术的破局之道 【免费下载链接】musicdl Musicdl: A lightweight music downloader written in pure python. 项目地址: https://gitcode.com/gh_mirrors/mu/musicdl 在数字音乐产业蓬勃发展的今天…...

ChatGLM3-6B-128K在客服系统中的应用:智能回复生成

ChatGLM3-6B-128K在客服系统中的应用:智能回复生成 1. 引言 想象一下,一个繁忙的电商客服中心,每天要处理成千上万的客户咨询。传统的人工客服需要不断重复回答相似的问题,不仅效率低下,还容易因为疲劳而出错。现在&…...

libvirt 有哪些命令

除了 virsh 外,还有很多有意思的命令。virt-manager 用于打开 libvirt 交互的界面除了连接本地电脑,也可以访问远程电脑的 libvirtd 服务virt-clone 快速克隆一个虚拟机。在 virt-manager 界面上也集成了这个功能。如下图,就是这么简单快捷&a…...

FRCRN命令行工具使用详解:从音频文件到降噪输出的完整流程

FRCRN命令行工具使用详解:从音频文件到降噪输出的完整流程 你是不是也遇到过这种情况?手头有一堆录音文件,背景里混杂着各种杂音——可能是空调的嗡嗡声、键盘的敲击声,或者是窗外的车流声。手动处理这些音频不仅费时费力&#x…...

提升90%效率:OpenCore EFI自动化配置工具OpCore-Simplify实战指南

提升90%效率:OpenCore EFI自动化配置工具OpCore-Simplify实战指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 副标题:面向…...

模型安全实践:实时手机检测-通用输入图像异常检测(模糊/过曝/裁剪)

模型安全实践:实时手机检测-通用输入图像异常检测(模糊/过曝/裁剪) 1. 项目简介与核心价值 在日常的手机检测应用中,我们经常会遇到各种图像质量问题:图片模糊看不清手机细节、光线过曝导致手机轮廓丢失、或者图片被…...

别再为Vue路由history模式发愁!宝塔面板Nginx一键配置指南

宝塔面板Nginx完美解决Vue路由history模式刷新404问题 每次在宝塔面板部署Vue项目时,最让人头疼的就是history路由模式下刷新页面出现的404错误。这个问题看似简单,却困扰着不少前端开发者。今天我们就来彻底解决这个痛点,让你在宝塔面板中轻…...

Jetson Orin上YOLOv8推理慢?手把手教你安装GPU版PyTorch并导出TensorRT引擎

Jetson Orin加速YOLOv8推理:从环境配置到TensorRT引擎优化实战 当你第一次在Jetson Orin上运行YOLOv8时,是否也被那令人窒息的推理速度震惊了?一张图片300多毫秒的处理时间,别说实时视频分析,就连批量处理图片都显得力…...

3步快速设置Windows任务栏透明美化:TranslucentTB新手完整指南

3步快速设置Windows任务栏透明美化:TranslucentTB新手完整指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 想要让Windows…...

3个关键步骤让LyricsX成为你的Mac音乐伴侣:从基础到精通

3个关键步骤让LyricsX成为你的Mac音乐伴侣:从基础到精通 【免费下载链接】LyricsX 🎶 Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX LyricsX是一款专为macOS设计的歌词工具,能够智能同步显示…...