试图加载格式不正确的程序_好程序员大数据学习路线之hive存储格式

好程序员大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile 、 sequencefile 、 rcfile 、 orc 、自定义 set hive.default.fileformat=TextFile; 默认存储格式为:textfile textFile:普通文本存储,不进行压缩。查询效率较低。

0fb1ecd5bc3f4b7b7458de8299dd1ad7.png

1.sequencefile:

hive提供的二进制序列文件存储,天生压缩。

sequeceFile 和 rcfile都不允许使用load方式加载数据。需要使用insert 方式插入

默认支付压缩、分割,使用便捷、写和查询较快。sequencefile和压缩属性可以搭配使用。

create table if not exists seq1(

id int,

name string

)

row format delimited fields terminated by ''

lines terminated by ''

stored as sequencefile

;

###加载数据错误方式

load data local inpath '/home/user' into table seq1;

###加载数据正确方式

insert into table seq1

select * from user1

;

2.rcfile:

rcfile可以进行行列混合压缩,将附近的列和行的数据尽量保存到相同的块里面,该存储格式会提高查询效率,但是写数据较慢。该方式和gzcodeC压缩属性结合不是很好() set mapred.output.compression=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

###创建rcfile表:

create table if not exists rc1(

id int,

name string

)

row format delimited fields terminated by ''

stored as rcfile

;

create table if not exists rc2(

id int,

name string

)

row format delimited fields terminated by ''

stored as rcfile

;

###加载数据错误方式

load data local inpath '/home/user' into table rc1;

###加载数据正确方式

insert into table rc2

select * from user1

;

3.存储自定义:

数据: seqyd元数据文件: aGVsbG8saGl2ZQ== aGVsbG8sd29ybGQ= aGVsbG8saGFkb29w seqyd文件为base64编码后的内容,decode后数据为:

##hello,hive

##hello,world

##hello,hadoop

create table cus(str STRING)

stored as

inputformat 'org.apache.hadoop.hive.contrib.fileformat.base64.Base64TextInputFormat'

outputformat 'org.apache.hadoop.hive.contrib.fileformat.base64.Base64TextOutputFormat';

LOAD DATA LOCAL INPATH '/home/cus' INTO TABLE cus;

通常是使用 defaultCodec + rcfile搭配效率最好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值