写点什么

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

  • 2016-12-22
  • 本文字数:1620 字

    阅读完需:约 5 分钟

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

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

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

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

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

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

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 )关注我们。

2016-12-22 18:003812
用户头像

发布了 33 篇内容, 共 13.2 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

一分钟带您了解,堡垒机主要功能有哪些?

行云管家

网络安全 服务器 堡垒机 等级保护

恒源云(GpuShare)_【功能更新】镜像市场上线

恒源云

深度学习

极客 - 大数据 - 作业 Flink

西伯利亚鼯鼠

实现连续测试,要做的事情【译】

FunTester

敏捷 自动化 持续集成 FunTester 连续测试

Linux 系统资源查看及硬件故障排查(qbit)

qbit

操作系统 故障 资源

LCN基本原理

平凡人生

增量编译:让小程序包编译速度提升11倍!

Speedoooo

容器 ios开发 APP开发 Andriod开发

不懂乐理和五线谱也能快速入门电子音乐制作!用FL Studio 搞音乐创作有时候就是这么简单!

懒得勤快

03 K8S之网络互联通信

穿过生命散发芬芳

k8s 11月日更

云小课|三大灵魂拷问GaussDB(DWS)数据落盘安全问题

华为云开发者联盟

安全 云小课 GaussDB(DWS) 数据仓库服务 数据落盘安全

MRS HetuEgine的数据虚拟化实践

华为云开发者联盟

大数据 数据湖 云原生 华为云 数据虚拟化

闻香识代码,什么是衡量代码质量的终极标准?

Zilliz

Java 代码质量 JavaScrip

30K成功入职京东:拿到京东offer经验分享「面试经历+面试真题」

Java redis spring 程序员 JVM

我凭借这份pdf,最终拿到了阿里,腾讯,京东等八家大厂offer

Java 编程 程序员 面试

漏洞深入分析-2021

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

pygame 中的图形绘制函数、帧速率和文字相关知识,简单的的不得了

梦想橡皮擦

11月日更

当你在跑步时在想什麽? 这个是村上春树的,当你在骑摩托车时在想什麽? 这个是波西格的

叶小鍵

网易智企斩获“2021全球新经济卓越成就奖”两项大奖

网易云信

大数据 云通信 通信云

如何快速搞定第三方登录且易扩展?

Tom弹架构

Java 架构 设计模式

lims实验室信息监控管理系统解决方案

低代码小观

企业管理 管理系统 LIMS实验室信息管理系统 LIMS系统 信息管理系统

拍乐云基于AV1的实时视频系统技术实践 | 2021 LiveVideoStackCon 演讲回顾

拍乐云Pano

音视频 WebRTC RTC

OCR的工作原理和应用场景

澳鹏Appen

人工智能 机器学习 OCR 训练数据 文本识别

架构实战营 - 毕业总结

燕燕 yen yen

架构训练营

公司刚来的阿里p8,看完我构建的springboot框架,甩给我一份文档

Java 编程 程序员 Spring Boot

APP上跑小程序,一箭双雕

Speedoooo

ios开发 APP开发 Andriod开发

惊艳11月!日更挑战你准备好了么!?

InfoQ写作社区官方

11月日更 热门活动

【Redis技术专题】分析一下Redission实现分布式锁的点点滴滴

码界西柚

redis redission redisson 分布式锁 11月日更

APP与小程序,相爱相杀

Speedoooo

容器 ios开发 APP开发 Andriod开发

Android技术分享| Android WebRTC 开启H264软件编解码教程

anyRTC开发者

android 音视频 WebRTC ffmpeg H264

WeTest六周年 | 匠心不改 初心不变

WeTest

Julien Le Dem对使用Apache Arrow进行面向列的数据处理的未来的看法_大数据_Alexandre Rodrigues_InfoQ精选文章