图片看不见的话可以看我CSDN上的文章:
https://blog.csdn.net/u013332124/article/details/86423952
最近在做hdfs小文件合并的项目,涉及了一些文件格式的读写,比如avro、orc、parquet等。期间阅读了一些资料,因此打算写篇文章做个记录。
这篇文章不会介绍如何对这些格式的文件进行读写,只会介绍一下它们各自的特点以及底层存储的编码格式 。
[图片上传失败...(image-a5104a-1547368703623)]
使用sequencefile还可以将多个小文件合并到一个大文件中,通过key-value的形式组织起来,此时该sequencefile可以看做是一个小文件容器。
[图片上传失败...(image-4d03a2-1547368703623)]
Parquet是一个基于列式存储的文件格式,它将数据按列划分进行存储。Parquet官网上的文件格式介绍图:
[图片上传失败...(image-92770e-1547368703623)]
我们可以看出,parquet由几个部分构成:
[图片上传失败...(image-391e57-1547368703623)]
Orc也是一个列式存储格式,产生自Apache Hive,用于降低Hadoop数据存储空间和加速Hive查询速度。
[图片上传失败...(image-ba6160-1547368703623)]
目前列式存储是大数据领域基本的优化项,无论是存储还是查询,列式存储能做的优化都很多,看完上面对orc和parquet的文件结构介绍后,我们列式存储的优化点做一个总结:
在压缩方面 :
在查询方面 :
就网上找到的一些数据来看,Orc的压缩比会比Parquet的高一些,至于查询性能,两个应该不会差距太大。本人之前做过一个测试,在多数场景,hive on mr下,orc的查询性能会更好一些。换成hive on spark后,parquet的性能更好一些
本文介绍的4种大数据存储格式,2个是行式存储,2个是列式存储,但我们可以看到一个共同点:它们都是支持分割的。这是大数据文件结构体系中一个非常重要的特点, 因为可分割使一个文件可以被多个节点并发处理,提高数据的处理速度 。
另外,当前大数据的主要趋势应该是使用列式存储,目前我们公司已经逐步推进列式存储的使用,本人也在hive上做过一些测试,在多个查询场景下,无论是orc还是parquet的查询速度都完爆text格式的, 差不多有4-8倍的性能提升 。另外,orc和parquet的压缩比都能达到10比1的程度。因此,无论从节约资源和查询性能考虑,在大多数情况下,选择orc或者parquet作为文件存储格式是更好的选择。另外,spark sql的默认读写格式也是parquet。
当然,并不是说列式存储已经一统天下了,大多时候我们还是要根据自己的使用场景来决定使用哪种存储格式。
Sequencefile
https://blog.csdn.net/en_joker/article/details/79648861
https://stackoverflow.com/questions/11778681/advantages-of-sequence-file-over-hdfs-textfile
Avro和Sequencefile区别
https://stackoverflow.com/questions/24236803/difference-between-avrodata-file-and-sequence-file-with-respect-to-apache-sqoop
parquet
https://www.cnblogs.com/ITtangtang/p/7681019.html
Orc
https://www.cnblogs.com/ITtangtang/p/7677912.html
https://www.cnblogs.com/cxzdy/p/5910760.html
Orc和parquet的一些对比
https://blog.csdn.net/colorant/article/details/53699822
https://blog.csdn.net/yu616568/article/details/51188479
正式文档编排格式如下:
1、标题格式
一级标题字体格式:仿宋GB2312,小三号,加粗;
一级标题编号格式:“一”、“二”、“三”、“四”…
二级标题字体格式:仿宋GB2312,四号,加粗;
二级标题编号格式:“(一)”、“(二)”、“(三)”、“(四)”…
三级标题字体格式:仿宋GB2312,四号,加粗;
三级标题编号格式:“1”、“2”、“3”、“4”…
四级标题字体格式:仿宋GB2312,四号,不加粗;
四级标题编号格式:“(1)”、“(2)”、“(3)”、“(4)”…
注:所有标题独立成行,不加标点。
2、正文格式
正文内容字体格式:仿宋GB2312,四号,不加粗。
3、页面格式
上、下页边距:2.54厘米
左、右页边距:3.17厘米
行间距:26磅
页码:阿拉伯数字,5号字体,页脚居中,封面及目录不添加页码。
4、表格格式
标题行:仿宋GB2312,20号字,加粗,单元格居中。
正文行:仿宋GB2312,12号字,不加粗。
水平对齐方式: 整列所有行的字数≤6时,本列水平居中;整列所有行的字数>6时,本列水平靠左。
垂直对齐方式:全部居中。
文本换行:自动换行。
扩展资料
命令标识由发文机关名称加“命令”或“令”组成,用红色小标宋体字,字号由发文机关酌定。命令标识上边缘距版心上边缘20mm,下边缘空2行居中标识标识令号;令号下空2行标识正文;正文下一行右空4字标识签发人签名章,签名章左空2字标识签发人职务;
联合发布的命令或令的签发人职务应标识全称。在签发人签名章下一行右空2字标识成文时间。分送机关标识方法同抄送机关。其他要素从本标准相关要素说明。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)