BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Julien Le Dem对使用Apache Arrow进行面向列的数据处理的未来的看法

| 作者 Alexandre Rodrigues 关注 0 他的粉丝 ,译者 王纯超 关注 0 他的粉丝 发布于 2016年12月23日. 估计阅读时间: 5 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Julien Le Dem是Apache Parquet的合著者,也是Apache Arrow项目的项目管理委员会成员,他在Data Eng Conf NY上介绍了面向列的数据处理的未来。

Apache Arrow是在内存中执行列式计算的开源标准,源于Apache Drill的内存列式数据结构。Apache Arrow旨在成为有效地在内存中保存数据并在不同执行引擎之间交换数据的事实上的方式,从而避免序列化。它由13个开源项目的主要开发人员提供支持,这些开源项目主要来自Apache,包括CalciteDrillPandasHBaseSparkStorm

InfoQ采访了Le Dem,以了解Arrow和Parquet的区别以及二者如何能支持更高效的跨执行引擎的计算。Parquet是一个磁盘上的列式存储格式。

InfoQ:你觉得Apache Arrow会像Parquet一样在Apache Spark这样的执行引擎上商品化(commoditized)吗?你认为它会缩小引擎间的性能差距吗?

Le Dem:MonetDB开始,矢量化执行是最先进的高效查询处理方式。 许多开源查询引擎正在转向这个模型,我们认为有必要标准化内存中的列式表示以提供极高效的互操作性。Parquet提供的列式存储功能,Arrow以内存中的列式处理和互换提供了。

这些标准化努力极大地简化了存储层、查询引擎、DSLUDF之间的集成,并通过消除序列化提供了更高效的通信层。通过消除公共的瓶颈,标准化让所有系统进行互操作变得更简单、更便宜、更快速了。然而,通过提供专业的技术进一步提升性能,比如基于压缩向量的操作或者更智能的查询优化器,每个执行引擎还有很大的创新空间。

InfoQ:Apache Parquet支持谓词下推(predicate pushdown),避免了只要页面不包含匹配谓词的数据就从磁盘读取数据的问题。Apache Arrow的数据结构包含类似的功能吗?

Le Dem:它们在从磁盘读数据和从内存读数据的取舍上是不同的。当前,谓词下推的实现取决于引擎。虽然还没有开始,但是Apache Arrow最终会提供能跨引擎重用的快速矢量化操作。

InfoQ:Arrow的目标之一是提供对内存数据的恒定时间访问,并通过SIMD指令支持矢量化操作。 Arrow也像Parquet一样提供内存数据压缩吗?

Le Dem: Arrow支持字典编码,能提供优秀的压缩效果,让聚合和连接这类操作更快地运行。现在也有一个正在进行的讨论,要使用像snappy或者gzip这样的通用算法来提供泛化的缓冲压缩。

在这个初始版本中,Arrow还不支持其他压缩技术,如位打包(bit packing)。然而,在使用标准向量进行数据交换的前提下,我们打算让执行引擎能够定义自定义向量。这将允许更高级的技术,例如直接操作压缩向量。 我想到的一个例子是威斯康星大学BitWeaving项目。 在将来,标准向量的集合将会扩充。

Arrow的第一个版本提供了Pandas库、Arrow和Parquet之间的基于C++的本地集成,让Arrow的Record Batches能作为Pandas的dataframe操作并暴露给像Apache Drill这样的基于Hadoop 的SQL引擎(SQL-on-Hadoop engine)。

InfoQ:Apache Arrow支持互操作,让数据不需要序列化就可以在进程间传输。你能点评一下Arrow的IPC层的能力吗?

Le Dem: IPC层仍然处于试验阶段,它是一个真正的零复制(zero-copy)层。当Arrow的Record Batch完成时,它变成不可变的。在此状态下,它可以使用共享内存以只读模式与其他进程共享,而不必担心并发访问。矢量表示独立于其内存地址(不需要绝对指针),并且可以安全地用在共享内存中,每个进程看到的缓冲器地址是不同的。

InfoQ:与Parquet一样,Apache Arrow支持嵌套数据类型。它当前支持哪些类型,哪些类型在计划中呢?

Le Dem: Arrow支持所有常见的数据类型。这是迄今为止相当全面的一份列表了。最近又添加了一些类型,包括SQL的Timestamp和Interval。

查看英文原文:Julien Le Dem on the Future of Column-Oriented Data Processing with Apache Arrow


感谢冬雨对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT