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