Hive中的FileFormat、RowFormat和SerDe总结

news/2024/10/15 8:24:15

Hive如何读写数据?

我们知道,hive表的数据是存储在hdfs文件系统中的。那么Hive是如何将hdfs上的数据文件,映射成一张张表呢,今天就来理清楚这个问题。

官方文档中对于Hive读数据的流程如下:

 

精炼一下:Hive的执行引擎首先通过InputFormat读取一条一条的数据记录,接着调用Serde.destrialize()来执行记录的反序列化,即将各种格式的数据反序列化为行对象,其中就包括切分和解析字段。

可以简单理解为:Hive使用FileFormat和SerDe读写数据。以读数据为例:InputFormat用于将数据拆成一条一条的记录,SerDe用于从一条记录中拆分字段。

什么是FileFormat?

FileFormat即文件格式,Hive内置文件格式包括textfile、orc、parquet、avro、jsonfile等,在建表语句中的stored as ...中指定。 其中,textfile是Hive默认的文件存储格式,可以通过hive.default.fileformat配置。

这几种文件格式,都有各自默认的SerDe、InputFormat和OutputFormat,举个例子:当我们指定Stored as orc的时候,等同于指定了下面三个配置:

 

需要注意的是,同一种文件格式的每一行数据的行格式也会有所不同,这就涉及到另一个概念:RowFormat。

什么是RowFormat?

RowFormat即行格式。比如同样是textFile文件,其中的行格式可以是RegEx正则类型、Json类型、CSV/TSV等。行格式不同,从一条记录中拆分字段的方式也不同。此时就需要指定不同的SerDe。

什么是SerDe?

SerDe是Serialize/Deserilize的简称,用于序列化和反序列化,SerDe能为表解析、拆分列,且对列指定相应的数据。在建表语句中有两种定义行格式方式:row format delimited或serde ,填写delimited表示使用默认的LazySimpleSerDe类来处理数据,对一行记录按照特定分隔符进行分割;填写SerDe表示使用其他的SerDe,甚至是用户自己自定义的SerDe。如果在建表时没有通过row format语法指定分隔符,则采用默认分隔符:\001。

除了内置的文件格式,Hive还支持用户开发的文件格式,此时,需要显式的指定inputformat 和outputformat,此时若不指定SerDe,会使用默认的SerDe。

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

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

相关文章

【每日一题】总行驶距离

2739. 总行驶距离卡车有两个油箱。给你两个整数,mainTank 表示主油箱中的燃料(以升为单位),additionalTank 表示副油箱中的燃料(以升为单位)。 该卡车每耗费 1 升燃料都可以行驶 10 km。每当主油箱使用了 5 升燃料时,如果副油箱至少有 1 升燃料,则会将 1 升燃料从副油箱…

eth-proj-bg-merge-0

面向初学者的 ETH 项目(全)原文:zh.annas-archive.org/md5/5b197ea4ae8836b6854907e58ea8a1dc 译者:飞龙 协议:CC BY-NC-SA 4.0前言 本书旨在让你深入了解以太坊区块链世界,并让你使用以太坊制作自己的加密货币。在本书中,你将学习各种概念,并直接应用这些知识,同时还…

末路狂花钱迅雷BT下载[MP4/1.82GB/5.35GB]超级清晰[HD720p/1080p]

电影《末路狂花钱》是一部由斯蒂文索德伯格执导的黑色喜剧电影,于20xx年上映。这部电影讲述了一个普通女人在生活的困境中,决定通过偷窃银行来改变自己的生活轨迹的故事。这部影片将观众带入了一个离奇又荒诞的旅程,展现了金钱和欲望对一个人的影响。  影片的主角是名叫珍…

维和防暴队迅雷BT下载[DH/1.24GB/6.45GB]高清国语[1080P]完整资源下载

维和防暴队是一部由德国导演赫尔托赫尔巴赫执导的电影,该片于2001年上映。该片是根据真实事件改编而成,讲述了联合国维和行动中的一支由德国警察组成的特殊部队,在非洲某个冲突地区执行任务的故事。  电影以德国警察克罗格为视角,通过他的眼睛让观众感知到维和行动中的残…

AVEVA MARINE C# 程序执行MarJobLauncher工作

手工执行的话一般如此操作,例如分离零件等操作今天利用c# 介绍下AM如何用代码执行提取零件gen文件的过程 引用如下的库文件封装的类库 其中appname/shortname/appExecutable这些去下面的文件去查找 C:\AVEVA\Marine\OH12.1.SP4\MarJobs.xml public static class MarJobEx{pub…

cv2 判断图片是冷还是暖

把图片的颜色空间转为HSV H表示色调(下图横轴), 图片的平均H值可用于区分冷暖 人工智障与神经病网络 https://www.cnblogs.com/JiangOil/

使用Spleete进行人声与背景声分离

安装:https://pypi.org/project/spleeter/ 下载权重: 2sterms.tar.gz https://github.com/deezer/spleeter/releases/tag/v1.4.02sterms分区分 背景音和人声, 此外还有4sterms和5sterms的模型, 会区分出更多乐器的轨道,视频提取声音到MP3格式 ffmpeg -i ./item.mp4 -vn -c:a l…

.Net 8.0 下的新RPC,IceRPC之试试的新玩法打洞

作者引言很高兴啊,我们来到了IceRPC之试试的新玩法"打洞",让防火墙哭去吧试试RPCs的新玩法"打洞"比较典型的玩法:RPC数据流从客户端流向服务端,现在来尝试用IceRPC来玩一个新的花样"打洞"。概述对于 IceRPC,客户端是发起连接的实体, 而服务…