这篇文章主要为大家展示了“Hive存储格式是怎么样的”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Hive存储格式是怎么样的”这篇文章吧。
Hive的默认存储格式是文本文件格 式,这个也可以通过可选的子句STORED AS TEXTFILE显式指定,同时用户还可以在创 建表时指定各种各样的分隔符。这里我们重新展示下之前讨论过的那个ods.ods_login表:
CREATE TABLE ods.ods_login(`uuid` string,`event` string,`time` string)ROW FORMAT DELIMITEDFIELDS TERMINATED BY *\001*COLLECTION ITEMS TERMINATED BY '\002*MAP KEYS TERMINATED BY '\003'LINES TERMINATED BY *\n'STORED AS TEXTFILE;
TEXTFILE意味着所有字段都使用字母、数字、字符编码,包括那些国际字符集,尽管 我们可以发现Hive默认是使用不可见字符来作为“\001”(分隔符)的。使用 TEXTFILE就意味着,每一行被认为是一个单独的记录。
用户可以将TEXTFILE替换为其他Hive所支持的内置文件格式,比如orc,parquet之类的,它们使用二进制编码和压缩(可选)来优化磁盘空间使用以及I/O带宽性能的。
对比一下常用的Hive存储格式:
TextFile 每一行都是一条记录,每行都以换行符(\ n)结尾。数据不做压缩,磁盘开销大,数据解析开销大。可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。
SequenceFile 是Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点。支持三种压缩选择:NONE, RECORD, BLOCK。Record压缩率低,一般建议使用BLOCK压缩。存储空间消耗最大,压缩的文件可以分割和合并 查询效率高,需要通过text文件转化来加载
RCFile 是一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个record在一个块上,避免读一个记录需要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。
AVRO 是开源项目,为Hadoop提供数据序列化和数据交换服务。您可以在Hadoop生态系统和以任何编程语言编写的程序之间交换数据。Avro是基于大数据Hadoop的应用程序中流行的文件格式之一。
ORC 文件代表了优化排柱状的文件格式。ORC文件格式提供了一种将数据存储在Hive表中的高效方法。这个文件系统实际上是为了克服其他Hive文件格式的限制而设计的。Hive从大型表读取,写入和处理数据时,使用ORC文件可以提高性能。压缩快,快速列存取 ,效率比rcfile高,是rcfile的改良版本
Parquet 是一个面向列的二进制文件格式。Parquet对于大型查询的类型是高效的。对于扫描特定表格中的特定列的查询,Parquet特别有用。Parquet桌子使用压缩Snappy,gzip;目前Snappy默认相对于ORC,Parquet压缩比较低,查询效率较低,不支持update、insert和ACID。但是Parquet支持Impala查询引擎
以上是“Hive存储格式是怎么样的”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。