Hive表存储文件格式

上一章讲解了hive是如何创建表,语法当中可以通过STORED AS指定表存储的文件格式。hive支持Hadoop中常用的几种文件格式,如:TextFile、SequenceFile、RCFile、AVRO、ORCParquet格式。


Hive TextFile文本文件格式

Hive 文本文件格式是默认的存储格式。文本文件格式在大多数应用程序中非常常见。

数据按行存储,每一行都是一条记录。每行都以换行符 (\n) 结束,hive文本当中默认的分隔表示如下:

\n 每行一条记录
^A (八进制 \001 分隔列
^B (八进制 \002 ^B 分隔ARRAY或者STRUCT中的元素,或者MAP中多个键值对之间分隔
^C(八进制 \003 ^C 分隔MAP中键值对的“键”和“值”

 

^:在Linux通过ctrl+v输入的,^A 就是通过crtl+v然后再crtl+a输入的。

stu.txt数据如下:

Hive表存储文件格式

例1、hive提供了从本地文件加载文件到hive表中的方法,如下,把三位学生信息的txt文件加载到hive表当中:

LOAD DATA LOCAL INPATH '/usr/local/stu.txt' INTO TABLE stuinfo;

导入结果如下:

Hive表存储文件格式


Hive SequenceFile序列文件格式

序列文件是 Hadoop基于行存储的文件,它以二进制键值对形式存储值。使用序列文件的主要优点是将两个或多个文件合并为一个文件。

通过在 Hive CREATE TABLE 命令的末尾添加存储选项“STORED AS SEQUENCEFILE”指定存储的是序列文件。


Hive RCFile文件格式

RCFile是Hive推出的一种专门面向列的数据格式。 它遵循“先按列划分,再垂直划分”的设计理念。如果您需要一次执行多行,那么您可以使用 RCFile 格式。

通过在 Hive CREATE TABLE 命令的末尾添加存储选项“STORED AS RCFILE“指定存储的是RCFile文件。


Hive Avro文件格式

Avro是一种用于支持数据密集型的二进制文件格式。它的文件格式更为紧凑,若要读取大量数据时,Avro能够提供更好的序列化和反序列化性能。

通过在 Hive CREATE TABLE 命令的末尾添加存储选项“STORED AS Avro“指定存储的是RCFile文件。


Hive ORC 文件格式

ORC File,它的全名是Optimized Row Columnar (ORC) file,其实就是对RCFile做了一些优化。官方介绍当中,这种文件格式可以提供一种高效的方法来存储Hive数据。它的设计目标是来克服Hive其他格式的缺陷。运用ORC File可以提高Hive的读、写以及处理数据的性能。

通过在 Hive CREATE TABLE 命令的末尾添加存储选项“STORED AS ORC“指定存储的是RCFile文件。


Hive Parquet文件格式

Apache Parquet是Hadoop生态圈中一种新型列式存储格式,Parquet最初是由Twitter和Cloudera合作开发完成并开源,2015年5月从Apache的孵化器里毕业成为Apache顶级项目。它也是使用了列式存储的方式提升查询性能。

通过在 Hive CREATE TABLE 命令的末尾添加存储选项“STORED AS parquet“指定存储的是RCFile文件。