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 文件存储格式是 Hive 中非常重要的概念,它直接影响着数据的存储和查询效率。在 Hive 中,常用的文件存储格式有 TextFile、ORC 和 Parquet 三种。下面我们将详细介绍这三种存储格式的...
而“Hive”是注册表的物理存储单元,主要有几个核心的Hive文件,如HKEY_LOCAL_MACHINE (HKLM) 和 HKEY_CURRENT_USER (HKCU)。本篇将探讨如何使用C++编程语言直接解析Windows注册表的Hive文件,而不依赖于系统提供的...
3. **创建SequenceFile**:Hadoop的SequenceFile是一种高效的数据存储格式,适合用于合并小文件。创建一个新的SequenceFile,作为合并后的大文件的目标。 4. **读取和写入数据**:遍历获取的文件列表,使用`...
Hive文件读写是Hive核心功能之一,使得数据分析师和数据科学家能够方便地对存储在HDFS(Hadoop分布式文件系统)中的大量数据进行操作。在本篇中,我们将深入探讨如何在Linux环境下使用Hive进行文件读写,并了解BCD...
- HIVE文件是二进制格式,包含键、值对,用于存储和加载注册表信息。 - 解析库文件(如FS.DLL)可能包含用于读取、修改或解析注册表HIVE的函数。 3. FAT (File Allocation Table): - FAT是早期Windows和MS-DOS...
在大数据处理领域,Apache Hive 是一个非常重要的工具,它提供了一个SQL-like的接口来查询、管理和分析存储在分布式存储系统(如Hadoop)中的大规模数据集。本篇将重点讲解如何利用Hive对Protobuf序列化的文件进行...
在Hive 2.1.1版本中,ORC(Optimized Row Columnar)格式是一种高效的数据存储方式,尤其适用于大数据处理。它提供了压缩、索引和列式存储等特性,能够极大地提高查询性能。然而,有时候在使用ORC格式读取数据时,...
这些库可能包括Hive与HBase交互所需的连接器、Hadoop相关的库、以及其他可能的依赖,如Avro、Parquet、Thrift等,这些都是大数据处理中的常见格式和通信协议。安装这些库后,Hive就能识别和处理HBase的数据,使得...
虽然DataX的配置通常在JSON格式的配置文件中完成,但与Hive、Hadoop和Spark的集成可能会涉及上述组件的配置调整,以确保数据传输的效率和正确性。 总的来说,理解和灵活调整这些组件的配置文件信息对于优化大数据...
在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL类查询语言(HQL)来处理存储在Hadoop分布式文件系统(HDFS)中的大规模数据集。"HIVE操作注册表.rar"这个压缩包可能包含了与在Hive环境中...
需要注意的是,由于Hadoop和Hive主要为Linux设计,Windows上的安装和配置可能会遇到更多问题,如文件路径格式、权限控制和依赖库的不兼容等。因此,用户可能需要查阅官方文档、社区论坛或教程来解决遇到的问题。
本资料包包含了两个关键文件:2013_12.csv 和 Hive指令样例.txt,分别用于理解Hive中的数据文件格式和基本操作命令。 2013_12.csv 文件是一个CSV(Comma Separated Values)文件,这是一种常见的数据交换格式,以...
2. **hive-log4j2.properties**:这是Hive的日志配置文件,定义了日志级别、日志输出格式和目的地等。通过调整这些参数,我们可以控制Hive运行时的日志信息,这对于调试和监控系统状态至关重要。 3. **hive-env.sh*...
6. **性能优化**:由于 JSON 数据解析相对较慢,为了提高性能,可以考虑预处理数据,如将 JSON 转换为 Parquet 或 ORC 格式,这两种格式都是 Hive 支持的列式存储格式,能显著提升查询速度。 7. **注意事项**:使用...
在 `storage-handlers` 和 `serde` 目录下,你可以找到 Hive 对 Parquet 和 ORC 等高效存储格式的支持。这些格式支持列式存储和压缩,大大提高了数据读取速度。 7. **Hive UDF(User Defined Function)** Hive ...
要将这种数据读取到 Hive 中,需要使用 `delimited` 存储格式和 `fields terminated by` speciify 分隔符。在创建表时,需要指定存储格式和分隔符如下: ``` Create [external] table test(id string,json string) ...
Apache ORC(Optimized Row Columnar)文件格式是Hadoop生态系统中的一种高效、紧凑的列式存储格式,尤其适用于大数据处理场景。它由Apache Hive项目发展而来,旨在提高数据分析的性能,减少磁盘I/O,并优化内存使用...