网易视频云专家分享:新一代列式存储格式Parquet

网易视频云专家分享:新一代列式存储格式Parquet

ID:42668315

大小:327.17 KB

页数:19页

时间:2019-09-19

网易视频云专家分享:新一代列式存储格式Parquet_第1页
网易视频云专家分享:新一代列式存储格式Parquet_第2页
网易视频云专家分享:新一代列式存储格式Parquet_第3页
网易视频云专家分享:新一代列式存储格式Parquet_第4页
网易视频云专家分享:新一代列式存储格式Parquet_第5页
资源描述:

《网易视频云专家分享:新一代列式存储格式Parquet》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、vcloud.163.com网易视频云专家分享:新一代列式存储格式Parquet网易视频云是网易推出的视频云服务平台,为客户提供真正易用的视频云服务,全面的端到端解决方案,全程技术专家接入指导。下面,网易视频云的技术专家给大家分享一下:新一代列式存储格式Parquet。  ApacheParquet是Hadoop生态圈中一种新型列式存储格式,它可以兼容Hadoop生态圈中大多数计算框架(Hadoop、Spark等),被多种查询引擎支持(Hive、Impala、Drill等),并且它是语言和平台无关的。Parquet最初是由Twitter和Cloudera(由于Impala

2、的缘故)合作开发完成并开源,2015年5月从Apache的孵化器里毕业成为Apache顶级项目,最新的版本是1.8.1。  Parquet是什么  Parquet的灵感来自于2010年Google发表的Dremel论文,文中介绍了一种支持嵌套结构的存储格式,并且使用了列式存储的方式提升查询性能,在Dremel论文中还介绍了Google如何使用这种存储格式实现并行查询的,如果对此感兴趣可以参考论文和开源实现ApacheDrill。  嵌套数据模型  在接触大数据之前,我们简单的将数据划分为结构化数据和非结构化数据,通常我们使用关系数据库存储结构化数据,而关系数据库中使用数据

3、模型都是扁平式的,遇到诸如List、Map和自定义Structvcloud.163.com的时候就需要用户在应用层解析。但是在大数据环境下,通常数据的来源是服务端的埋点数据,很可能需要把程序中的某些对象内容作为输出的一部分,而每一个对象都可能是嵌套的,所以如果能够原生的支持这种数据,这样在查询的时候就不需要额外的解析便能获得想要的结果。例如在Twitter,在他们的生产环境中一个典型的日志对象(一条记录)有87个字段,其中嵌套了7层,如下图:    另外,随着嵌套格式的数据的需求日益增加,目前Hadoop生态圈中主流的查询引擎都支持更丰富的数据类型,例如Hive、Spar

4、kSQL、Impala等都原生的支持诸如struct、map、array这样的复杂数据类型,这样也就使得诸如Parquet这种原生支持嵌套数据类型的存储格式也变得至关重要,性能也会更好。  列式存储  列式存储,顾名思义就是按照列进行存储数据,把某一列的数据连续的存储,每一行中的不同列的值离散分布。列式存储技术并不新鲜,在关系数据库中都已经在使用,尤其是在针对OLAP场景下的数据存储,由于OLAP场景下的数据大部分情况下都是批量导入,基本上不需要支持单条记录的增删改操作,而查询的时候大多数都是只使用部分列进行过滤、聚合,对少数列进行计算(基本不需要select*fromx

5、x之类的查询)。列式存储可以大大提升这类查询的性能,较之于行是存储,列式存储能够带来这些优化:  1、由于每一列中的数据类型相同,所以可以针对不同类型的列使用不同的编码和压缩方式,这样可以大大降低数据存储空间。vcloud.163.com  2、读取数据的时候可以把映射(Project)下推,只需要读取需要的列,这样可以大大减少每次查询的I/O数据量,更甚至可以支持谓词下推,跳过不满足条件的列。  3、由于每一列的数据类型相同,可以使用更加适合CPUpipeline的编码方式,减小CPU的缓存失效。  Parquet的组成  Parquet仅仅是一种存储格式,它是语言、平

6、台无关的,并且不需要和任何一种数据处理框架绑定,目前能够和Parquet适配的组件包括下面这些,可以看出基本上通常使用的查询引擎和计算框架都已适配,并且可以很方便的将其它序列化工具生成的数据转换成Parquet格式。  查询引擎:Hive,Impala,Pig,Presto,Drill,Tajo,HAWQ,IBMBigSQL  计算框架:MapReduce,Spark,Cascading,Crunch,Scalding,Kite  数据模型:Avro,Thrift,ProtocolBuffers,POJOs  项目组成  Parquet项目由以下几个子项目组成:  par

7、quet-format项目由java实现,它定义了所有Parquet元数据对象,Parquet的元数据是使用ApacheThrift进行序列化并存储在Parquet文件的尾部。  parquet-mr项目由java实现,它包括多个模块,包括实现了读写Parquet文件的功能,并且提供一些和其它组件适配的工具,例如HadoopInput/OutputFormats、HiveSerde(目前Hive已经自带Parquet了)、Pigloaders等。  parquet-compatibility项目,包含不同编程语言之间(JAVA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。