Apache Hive File

Stella981
• 阅读 614

Apache Hive File

Apache Hive TM

(文件存储格式)

Hive 文件存储格式主要包括以下几类:

1、TEXTFILE

2、SEQUENCEFILE

3、RCFILE

4、ORCFILE(0.11以后出现)

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

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

Apache Hive

Hive环境

⊙前提创建环境

(本系列教程使用,CDH 官方快速入门)

hive-common-1.1.0-cdh5.13.0

数据结构

Data Structure

数据源(来源网络)

◆  ◆  ◆  ◆  ◆

Apache Hive File

一、TEXTFILE

创建一张格式为:TEXTFILE, 表名为: nsf_textfile

并且导入服务器本地数据!

create table if not exists a2data.nsf_testfile(id string,chicun string,fbl string,qz string,hz string ,dc string,tag string ,phone string ,keywords string,xq string,type string, new_keyworlds string) row format delimited fields terminated by '\t' stored as textfile;

load data local inpath '/home/cloudera/a2data/hive/file.txt' overwrite into table a2data.nsf_testfile;

Apache Hive File

TEXTFILE:默认格式,数据不做压缩,这样就会导致磁盘开销大,数据解析开销大。

可结合Gzip、Bzip2 使用(系统自动检查,执行查询时自动解压),使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。

示例:create table if not exists a2data.textfile_table(id string,chicun string,fbl string,qz string,hz string ,dc string,tag string ,phone string ,keywords string,xq string,type string, new_keyworlds string)row format delimitedfields terminated by '\t'stored as textfile;插入数据操作:set hive.exec.compress.output=true;  set mapred.output.compress=true;  set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;  set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;  insert overwrite table a2data.textfile_table select * from a2data.nsf_testfile;  

二、SEQUENCEFILE

SequenceFile是Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点。

SequenceFile支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩。

示例:create table if not exists a2data.seqfile_table(id string,chicun string,fbl string,qz string,hz string ,dc string,tag string ,phone string ,keywords string,xq string,type string, new_keyworlds string)row format delimitedfields terminated by '\t'stored as sequencefile;插入数据操作:set hive.exec.compress.output=true;  set mapred.output.compress=true;  set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;  set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;  SET mapred.output.compression.type=BLOCK;insert overwrite table a2data.seqfile_table select * from a2data.textfile_table;  

三、RCFILE

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

示例:create table if not exists a2data.rcfile_table(id string,chicun string,fbl string,qz string,hz string ,dc string,tag string ,phone string ,keywords string,xq string,type string, new_keyworlds string)row format delimitedfields terminated by '\t'stored as rcfile;插入数据操作:set hive.exec.compress.output=true;  set mapred.output.compress=true;  set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;  set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;  insert overwrite table a2data.rcfile_table select * from a2data.textfile_table; 

四、ORCFILE(简写ORC)

ORC File,它的全名是Optimized Row Columnar (ORC) file,其实就是对RCFile做了一些优化。这种文件格式可以提供一种高效的方法来存储Hive数据。它的设计目标是来克服Hive其他格式的缺陷。

运用ORC File可以提高Hive的读、写以及处理数据的性能。

和RCFile格式相比,ORC File格式有以下优点:

(1)、每个task只输出单个文件,这样可以减少NameNode的负载;

(2)、支持各种复杂的数据类型,比如: datetime, decimal, 以及一些复杂类型(struct, list, map, and union);

(3)、在文件中存储了一些轻量级的索引数据;

(4)、基于数据类型的块模式压缩:a、integer类型的列用行程长度编码(run-length encoding);b、String类型的列用字典编码(dictionary encoding);

(5)、用多个互相独立的RecordReaders并行读相同的文件;

(6)、无需扫描markers就可以分割文件;

(7)、绑定读写所需要的内存;

(8)、metadata的存储是用 Protocol Buffers的,所以它支持添加和删除一些列。

五、再看TEXTFILE、SEQUENCEFILE、RCFILE三种文件的存储情况:

Apache Hive File

Apache Hive File

结论

Apache Hive File

Apache Hive File

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

Apache Hive File

扫码

长按关注

Apache Hive File

关注

惊喜不断

Apache Hive File

**Apache Hive TM**(详细介绍以及优化)

**__Apache Hive Load Data__**(数据导入方式)

觉得有价值,请点个 在看

本文分享自微信公众号 - DataScience(DataScienceTeam)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
4cast
4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页:
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这