`
yugouai
  • 浏览: 491716 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Hive文件存储格式

 
阅读更多

hive文件存储格式包括以下几类:

 

 

  • TEXTFILE

 

  • SEQUENCEFILE

 

  • RCFILE

 

  • 自定义格式

 

其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理。

 

 

SequenceFile,RCFile格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中,然后再从textfile表中用insert导入到SequenceFile,RCFile表中。

 

TEXTFIEL

默认格式,数据不做压缩,磁盘开销大,数据解析开销大。
可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。

 

实例:

> create table test1(str STRING)  
> STORED AS TEXTFILE;   
OK  
Time taken: 0.786 seconds  
#写脚本生成一个随机字符串文件,导入文件:  
> LOAD DATA LOCAL INPATH '/home/work/data/test.txt' INTO TABLE test1;  
Copying data from file:/home/work/data/test.txt  
Copying file: file:/home/work/data/test.txt  
Loading data to table default.test1  
OK  
Time taken: 0.243 seconds

 

SEQUENCEFILE

SequenceFile是Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点。
SequenceFile支持三种压缩选择:NONE, RECORD, BLOCK。 Record压缩率低,一般建议使用BLOCK压缩。

 

示例:

> create table test2(str STRING)  
> STORED AS SEQUENCEFILE;  
OK  
Time taken: 5.526 seconds  
hive> SET hive.exec.compress.output=true;  
hive> SET io.seqfile.compression.type=BLOCK;  
hive> INSERT OVERWRITE TABLE test2 SELECT * FROM test1;  

 

RCFILE

RCFILE是一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个record在一个块上,避免读一个记录需要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。RCFILE文件示例:

> create table test3(str STRING)  
> STORED AS RCFILE;  
OK  
Time taken: 0.184 seconds  
>  INSERT OVERWRITE TABLE test3 SELECT * FROM test1;

 

自定义格式

当用户的数据文件格式不能被当前 Hive 所识别的时候,可以自定义文件格式。
用户可以通过实现inputformat和 outputformat来自定义输入输出格式,参考代码:.\hive-0.8.1\src\contrib\src\java\org\apache \hadoop\hive\contrib\fileformat\base64
实例:

> create table test4(str STRING)  
> stored as  
> inputformat 'org.apache.hadoop.hive.contrib.fileformat.base64.Base64TextInputFormat'  
> outputformat 'org.apache.hadoop.hive.contrib.fileformat.base64.Base64TextOutputFormat'; 

 

$ cat test1.txt 
aGVsbG8saGl2ZQ==
aGVsbG8sd29ybGQ=
aGVsbG8saGFkb29w

 

test1文件为base64编码后的内容,decode后数据为:

hello,hive
hello,world
hello,hadoop

 

load数据并查询:

hive> LOAD DATA LOCAL INPATH '/home/work/test1.txt' INTO TABLE test4;   
Copying data from file:/home/work/test1.txt  
Copying file: file:/home/work/test1.txt  
Loading data to table default.test4  
OK  
Time taken: 4.742 seconds  
hive> select * from test4;  
OK  
hello,hive  
hello,world  
hello,hadoop  
Time taken: 1.953 seconds

 

总结

相比TEXTFILE和SEQUENCEFILE,RCFILE由于列式存储方式,数据加载时性能消耗较大,但是具有较好的压缩比和查询响应。数据仓库的特点是一次写入、多次读取,因此,整体来看,RCFILE相比其余两种格式具有较明显的优势。

分享到:
评论

相关推荐

    hive文件存储格式对比实验测试数据

    hive测试数据,其中为日志类型,用于验证在hive中主流文件存储格式对比实验

    CDH550@hive存储格式和HQL材料

    CDH550下的hive的存储格式介绍和HQL的详细说明。一般数据存储模式主要有三种,1)行存储;2)列存储;3)混合存储。 1)行存储模式就是:把一整行存在一起,包含所有的列,这是最常见的模式。这种结构能很好的适应...

    hive从入门到放弃(六)——常用文件存储格式.doc

    hive从入门到放弃(六)——常用文件存储格式.doc

    利用Hive进行复杂用户行为大数据分析及优化案例

    09_Hive中数据文件的存储格式介绍及对比 10_常见的压缩格式及MapReduce的压缩介绍 11_Hadoop中编译配置Snappy压缩 12_Hadoop及Hive配置支持snappy压缩 13_Hive中的常见调优 14_Hive中的数据倾斜及解决方案-三种join...

    cpp-ApacheORC文件格式是一种Hadoop生态圈中的列式存储格式

    Apache ORC 文件格式是一种Hadoop生态圈中的列式存储格式,它的产生早在2013年初,最初产生自Apache Hive,用于降低Hadoop数据存储空间和加速Hive查询速度。

    Hive编程指南中文版

    第15章 自定义Hive文件和记录格式 第16章 Hive的Thrift服务 第17章 存储处理程序和NoSQL 第18章 安全 第19章 锁 第20章 Hive和Oozie整合 第21章 Hive和亚马逊网络服务系统 第22章 HCatalog 第23章 案例研究

    hive编程指南中文版

    · 从文件到外部数据库,自定义数据存储格式和存储选项。 · 将数据载入表中以及从表中抽取数据,并使用查询、分组、过滤、连接和其他常规查询方法。 · 获得创建用户自定义函数(UDF)的最佳方法。 · 了解应该使用...

    hive-笔记--hive常用用法

    内部表和外部表,导入数据,导出数据,将数据从hive的表中导出到本地磁盘目录中,HIVE的存储文件格式,修改表的分区,多重插入,HIVE的自定义函数功能,使用explode —— 行转列,配合lateral view 列转行方便统计,...

    Hive用户指南(Hive_user_guide)_中文版.pdf

    (” n”)以及读取文件数据的方法( Hive 中默认有三个文件格式 TextFile , SequenceFile 以及 RCFile )。由于在加载数据的过程中,不需要从用户数据格式到 Hive 定义的数据格式的转换,因此, Hive 在加载的...

    Hive编程指南

    · 从文件到外部数据库,自定义数据存储格式和存储选项。 · 将数据载入表中以及从表中抽取数据,并使用查询、分组、过滤、连接和其他常规查询方法。 · 获得创建用户自定义函数(UDF)的最佳方法。 · 了解应该使用...

    【63课时完整版】大数据实践HIVE详解及实战

    45.Hive中数据文件的存储格式介绍及对比 46.常见的压缩格式及MapReduce的压缩介绍 47.Hadoop中编译配置Snappy压缩 48.Hadoop及Hive配置支持snappy压缩 49.Hive中的常见调优 50.Hive中的数据倾斜及解决方案-三种join...

    1-4-Hive+and+Impala.pdf

    Impala 与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的共同之处,如数据表元数 据、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。Impala与Hive...

    apache-hive-2.3.5-bin.tar.gz

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的...

    1、通过亿级数据量在hive和impala中查询比较text、orc和parquet性能表现(一)

    本文通过在hdfs中三种不同数据格式文件存储相同数量的数据,通过hive和impala两种客户端查询进行比较。 本文前提:熟悉hadoop、hive和impala、kafka、flink等,并且其环境都可正常使用。(在后续的专栏中都会将对应...

    1、通过亿级数据量在hive和impala中查询比较text、orc和parquet性能表现(二)

    本文通过在hdfs中三种不同数据格式文件存储相同数量的数据,通过hive和impala两种客户端查询进行比较。 本文前提:熟悉hadoop、hive和impala、kafka、flink等,并且其环境都可正常使用。(在后续的专栏中都会将对应...

    使用kettle将mysql中的数据导入到hive中

    先说说思路:1是直接从mysql输出至hive中,另外一个是先将数据搞到hdfs中,再load一下,当然这只是textfile存储格式而言,若是ORC等其他列式存储的话建议先搞一个textfile格式的中间表,再insert into table select ...

    15-Hadoop压缩和存储

    Hadoop压缩和存储思维导图,便捷整理思路,Hadoop压缩配置、文件存储格式、Hive支持格式、存储和压缩结合

    完整图文版 阿里巴巴数据产品平台 大数据与云计算技术系列教程 Hadoop之Hive学习笔记(共63页).pdf

    Hive 中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、”\t”、”\x001″)、行分隔符(”\n”)以及读取文件数据的方法(Hive 中默认有三个文件格式 ...

    Impala和Hive的关系(详解)

    Impala与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的共同之处,如数据表元数据、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。Impala与Hive在...

Global site tag (gtag.js) - Google Analytics