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

介绍并比较Apache Hive支持的文件格式

Apache Hive 支持几种熟知的Hadoop使用的文件格式,Hive也能加载并查询其他Hadoop组件创建的不同文件格式,如Pig或MapReduce。本文对比Hive不同文件格式,如:TextFile, SequenceFile, RCFile, AVRO, ORC,Parquet,Cloudera Impala也支持这些格式。在Apache Hive中不同文件格式和压缩编解码方式对不同的数据集产生效果差异明显,基于场景选择合适的文件格式非常重要,就如在ClickHouse中选择合适的存储引擎一样。下面分别介绍Hive支持的各类文件格式。

Hive Text File Format

Hive Text File Format是缺省的文件格式,可以使用该格式与其他客户端应用传输数据。文本文件格式为大多数应用支持,数据按行存储,每一行代表一条记录,每行以回车符(\n)结束。

文本文件是简单平面文件格式,可以使用BZIP2进行压缩减少存储空间。Hive创建表命令可以使用STORED AS TEXTFILE支持存储格式,示例语法如下:

Create table textfile_table
(column_specs)
stored as textfile;

Hive Sequence File Format

Sequence文件格式是Hadoop支持的平面文件,数据存储为二进制键值对格式。这些文件是二进制格式、且能够分割,主要优势可以合并两个或多个文件为一个文件。

在Hive中创建顺序文件表可以通过增加存储选项实现:STORED AS SEQUENCEFILE 。下面是示例语法:

Create table sequencefile_table
(column_specs)
stored as sequencefile;

Hive RC File Format

RC 文件格式是行列文件格式,是Hive提供高行级压缩率的另一个文件格式。如果需要一次性执行多行,可以使用RCFile格式。

RCFile格式与顺序文件格式非常类似,也按照键值对方式存储数据。Hive创建RCFile表时可以指定STORED AS RCFILE选项。示例语法如下:

Create table RCfile_table
(column_specs)
stored as rcfile;

Hive AVRO File Format

AVRO是为Hadoop提供数据序列化和数据交换服务的开源项目,它可以用于在Hadoop生态与任何编程语言编写的应用之间交换数据。Avro是基于Hadoop应用最受欢迎的文件格式。

创建Hive AVRO表可以指定STORED AS AVRO选项:

Create table avro_table
(column_specs)
stored as avro;

Hive ORC File Format

ORC( Optimized Row Columnar )文件格式提供了更有效方式存储Hive表数据。这个文件系统实际上就是为了克服其他Hive文件格式的限制特性而设计的。当Hive从大表中读取、写入和处理数据时,使用ORC文件可以提高性能。

创建Hive ORC表可以指定STORED AS ORC选项:

Create table orc_table
(column_specs)
stored as orc;

Hive Parquet File Format

Parquet是面向类二进制文件格式,对于大规模查询应用非常高效,尤其是查询表中特定列数据,且能够使用 Snappy, gzip方式进行压缩,缺省为Snappy。关于parquet文件格式的优势可以参考:基于R语言理解Parquet文件格式

创建Hive Parquet表可以指定STORED AS ORC选项:

Create table parquet_table
(column_specs)
stored as parquet;

总结

本文介绍了Hive中支持的不同文件格式,了解并选择合适的文件格式对于大数据类应用非常重要。

http://www.lryc.cn/news/18608.html

相关文章:

  • C语言之文件操作
  • Linux->父子进程初识和进程状态
  • 【Linux学习笔记】5.Linux 用户和用户组管理
  • 茂名市 2021 年高中信息技术学科素养展评
  • 【软件测试】测试人不躺平,进军高级自动化测试自救,你的不一样结局......
  • win10环境下安装java开发环境安装java
  • 【华为OD机试模拟题】用 C++ 实现 - 开心消消乐(2023.Q1)
  • opencv图像融合
  • 没有经验的时候,怎么搞定面试?
  • 整数保序的离散化(C/C++)
  • python--排序总结
  • 进化的隐藏水印:深度学习提升版权保护的鲁棒性
  • Jenkins配置项目教程
  • C++多继承,虚继承部分总结与示例
  • 程序员35岁以后就没有出路了吗?听听京东10年测开的分析
  • 数据结构(六):冒泡排序、选择排序、插入排序、希尔排序、快速排序
  • C++之类与对象(上)
  • Java岗面试题--Java并发 计算机网络(日积月累,每日三题)
  • 三菱FX3U与威纶MT8071IP走RS422通讯
  • 给想考CISP的一点建议
  • ACM 记忆化搜索
  • spring框架常用注解简单说明
  • 2023-02-24 mysql/innodb-聚合-临时表避免OOM-使用磁盘文件-分析
  • cracklib与libpwquality 评估密码的安全性
  • 【Java】保证并发安全的三大特性
  • 如何优雅的用golang封装配置项(Functional Options)
  • Springboot 使用thymeleaf 服务器无法加载resources中的静态资源异常处理
  • 服务端IOS订阅类型支付接入详细说明与注意事项
  • 【剑指Offer】重建二叉树(递归+迭代)
  • 注解@Transactional 原理和常见的坑