`
yugouai
  • 浏览: 498467 次
  • 性别: 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中主流文件存储格式对比实验

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

    Hive 文件存储格式详解 Hive 文件存储格式是 Hive 中非常重要的概念,它直接影响着数据的存储和查询效率。在 Hive 中,常用的文件存储格式有 TextFile、ORC 和 Parquet 三种。下面我们将详细介绍这三种存储格式的...

    C++解析windows注册表hive文件

    而“Hive”是注册表的物理存储单元,主要有几个核心的Hive文件,如HKEY_LOCAL_MACHINE (HKLM) 和 HKEY_CURRENT_USER (HKCU)。本篇将探讨如何使用C++编程语言直接解析Windows注册表的Hive文件,而不依赖于系统提供的...

    Hive内部表合并小文件Java程序

    3. **创建SequenceFile**:Hadoop的SequenceFile是一种高效的数据存储格式,适合用于合并小文件。创建一个新的SequenceFile,作为合并后的大文件的目标。 4. **读取和写入数据**:遍历获取的文件列表,使用`...

    HIVE文件读写

    Hive文件读写是Hive核心功能之一,使得数据分析师和数据科学家能够方便地对存储在HDFS(Hadoop分布式文件系统)中的大量数据进行操作。在本篇中,我们将深入探讨如何在Linux环境下使用Hive进行文件读写,并了解BCD...

    文件系统\注册表HIVE 解析库文件

    - HIVE文件是二进制格式,包含键、值对,用于存储和加载注册表信息。 - 解析库文件(如FS.DLL)可能包含用于读取、修改或解析注册表HIVE的函数。 3. FAT (File Allocation Table): - FAT是早期Windows和MS-DOS...

    Hive 对 Protobuf 序列化文件读取.zip

    在大数据处理领域,Apache Hive 是一个非常重要的工具,它提供了一个SQL-like的接口来查询、管理和分析存储在分布式存储系统(如Hadoop)中的大规模数据集。本篇将重点讲解如何利用Hive对Protobuf序列化的文件进行...

    hive所有jar文件

    这些库可能包括Hive与HBase交互所需的连接器、Hadoop相关的库、以及其他可能的依赖,如Avro、Parquet、Thrift等,这些都是大数据处理中的常见格式和通信协议。安装这些库后,Hive就能识别和处理HBase的数据,使得...

    hive2.1.1中orc格式读取报数组越界错误解决方法

    在Hive 2.1.1版本中,ORC(Optimized Row Columnar)格式是一种高效的数据存储方式,尤其适用于大数据处理。它提供了压缩、索引和列式存储等特性,能够极大地提高查询性能。然而,有时候在使用ORC格式读取数据时,...

    hive配置文件信息修改

    虽然DataX的配置通常在JSON格式的配置文件中完成,但与Hive、Hadoop和Spark的集成可能会涉及上述组件的配置调整,以确保数据传输的效率和正确性。 总的来说,理解和灵活调整这些组件的配置文件信息对于优化大数据...

    HIVE操作注册表.rar

    在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL类查询语言(HQL)来处理存储在Hadoop分布式文件系统(HDFS)中的大规模数据集。"HIVE操作注册表.rar"这个压缩包可能包含了与在Hive环境中...

    windows下hive的可执行文件

    需要注意的是,由于Hadoop和Hive主要为Linux设计,Windows上的安装和配置可能会遇到更多问题,如文件路径格式、权限控制和依赖库的不兼容等。因此,用户可能需要查阅官方文档、社区论坛或教程来解决遇到的问题。

    Hive数据文件以及CLI操作命令

    本资料包包含了两个关键文件:2013_12.csv 和 Hive指令样例.txt,分别用于理解Hive中的数据文件格式和基本操作命令。 2013_12.csv 文件是一个CSV(Comma Separated Values)文件,这是一种常见的数据交换格式,以...

    基于虚拟机hadoop集群hive2.1.1配置文件

    2. **hive-log4j2.properties**:这是Hive的日志配置文件,定义了日志级别、日志输出格式和目的地等。通过调整这些参数,我们可以控制Hive运行时的日志信息,这对于调试和监控系统状态至关重要。 3. **hive-env.sh*...

    hive,json格式传送,加载数据

    6. **性能优化**:由于 JSON 数据解析相对较慢,为了提高性能,可以考虑预处理数据,如将 JSON 转换为 Parquet 或 ORC 格式,这两种格式都是 Hive 支持的列式存储格式,能显著提升查询速度。 7. **注意事项**:使用...

    cloudera-hive-cdh6.3.2源码包

    在 `storage-handlers` 和 `serde` 目录下,你可以找到 Hive 对 Parquet 和 ORC 等高效存储格式的支持。这些格式支持列式存储和压缩,大大提高了数据读取速度。 7. **Hive UDF(User Defined Function)** Hive ...

    hive支持json格式的数据.pdf

    要将这种数据读取到 Hive 中,需要使用 `delimited` 存储格式和 `fields terminated by` speciify 分隔符。在创建表时,需要指定存储格式和分隔符如下: ``` Create [external] table test(id string,json string) ...

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

    Apache ORC(Optimized Row Columnar)文件格式是Hadoop生态系统中的一种高效、紧凑的列式存储格式,尤其适用于大数据处理场景。它由Apache Hive项目发展而来,旨在提高数据分析的性能,减少磁盘I/O,并优化内存使用...

Global site tag (gtag.js) - Google Analytics