Hadoop数据模型

本文详细介绍了Hadoop数据模型中的Text、SequenceFile、Avro、Parquet和RC及ORC的存储格式。Text格式便于数据交换但查询效率低;SequenceFile是HDFS自带的键值对存储,支持压缩;Avro提供了丰富的数据结构和高效的二进制格式;Parquet是列式存储,适用于宽表查询;RC和ORC结合了行和列存储的优点,适合大数据处理。选择存储格式时要考虑读写性能,Hive查询性能顺序为ORC > Parquet > Text > Avro > SequenceFile。
摘要由CSDN通过智能技术生成

Text

1.概念:文本文件通常采用CSV、JSON等固度长度的纯文本格式
2.优点:
①便于与其他应用程序(生成或分割文件)或脚本进行数据交换
②易读性好,便于理解
3.缺点:
①数据存储量非常庞大
②查询效率不高
③不支持块压缩

SequenceFile

1.概念:
①SequenceFile按行存储二进制键值对数据,HDFS自带
②二进制文件直接将<Key,Value>序列化到文件中
③常用于在MapReduce作业之间传输数据
④可用作Hadoop中小文件的打包存档(小文件合并)
⑤即使在压缩数据时也支持分割
2.键值对类型
SequenceFile中的Key和Value可以是任意类型的Writable(org.apache.hadoop.io.Writable)
3.Java API

org.apache.hadoop.io.SequenceFile

4.存储结构
①记录结构:
在这里插入图片描述
②块结构:
在这里插入图片描述

5.压缩
①记录级(record):
在这里插入图片描述

②块级(block)
在这里插入图片描述
6.读写操作
①写文件(指定为块压缩):

SequenceFile.Writer

②读文件(读取时能自动解压):

SequenceFile.Reader

③查看文件内容:

hdfs dfs -text myseqfile.seq

7.hive中使用SequenceFile
①直接指定:

STORED AS sequencefile

②显示指定:

STORED AS INPUTFORMAT   'org.apache.hadoop.mapred.SequenceFileInputFormat' 
OUTPUTFORMAT  'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat'

Avro

1.概念:
Apache Avro是一个数据序列化系统,出自Hadoop之父Doug Cutting

2.Avro File:
①以JSON格式存储数据定义(Schema)
②以二进制格式存储数据

3.特点:
①丰富的数据结构
②快速可压缩的二进制数据格式
③容器文件用于持久化数据
④自带远程过程调用RPC
⑤动态语言可以方便地处理Avro数据

4.数据类型
①基本数据类型
null, boolean, int, long, float, double, bytes, string
②复杂数据类型
record,enum,array,map,union,fixed

5.avro-tools的应用
①使用schema+data生成avro文件

java -jar avro-tools-1.8.2.jar fromjson --schema-file user.avsc user.json > user.avro
java -jar avro-tools-1.8.2.jar fromjson --codec snappy --schema-file user.avsc user.json > user.avro

②avro转json

java -jar avro-tools-1.8.2.jar tojson user.avro
java -jar avro-tools-1.8.2.jar tojson user.avro 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值