我已经看到在导入和存储到HDFS中时使用了不同的文件格式,并且数据处理引擎在执行自己的过程集时也使用了这些格式,因此这些文件格式有何不同,以及如何针对不同的用例进行选择。作为新手会引起混乱,请帮忙。
选择取决于所拥有的数据类型,与处理工具的兼容性,架构演变,文件大小,查询和读取性能的类型,取决于您所面对的用例。
一般来说 :
Avro更适合随时间变化的事件数据
序列用于MR作业之间分片的数据集
由于Parquet是列格式,因此更适合分析
这是一些可以帮助您的钥匙
写作表现(越多越快)
顺序:+++
Avro:++
实木复合地板:+
阅读性能(越多越快)
顺序:+
阿夫罗(Avro):+ + +
实木复合地板:+ + + + +
文件大小(文件越大,文件越小)
顺序:+
Avro:++
实木复合地板:+ + +
这是关于每种文件类型的一些事实
阿夫罗(Avro):
模式发展更好
是面向行的二进制格式
有一个模式
该文件除包含数据外,还包含架构。
支持架构演变
可以压缩
紧凑而快速的二进制格式
实木复合地板
写作慢,阅读快
是面向列的二进制格式
支持压缩
需要查询特定列时在磁盘I / O方面进行了优化和高效
SequenceFile:
是面向行的格式
即使数据被压缩也支持拆分
可用于将小文件打包到hadoop中
希望我的回答对您有帮助