为什么要对Apache Arrow使用Gandiva

凯利Stirman是战略与CMO的副总裁Dremio 。

在过去的三年中, Apache Arrow在一系列不同的开源社区中Swift普及。 仅在Python社区中,Arrow每月就被下载超过500,000次。 Arrow项目既是有关如何以高效方式表示数据以进行内存中分析的规范,又是一系列使用十几种语言的库,可用于Arrow列格式。

与大多数汽车制造商OEM自己的变速器而不是自行设计和制造自己的变速器一样,Arrow为项目提供了一种最佳方式来管理和处理内存中的数据,以应对各种分析工作负载,包括机器学习,人工智能,数据帧,和SQL引擎。

针对Apache Arrow 的Gandiva计划是基于LLVM的Arrow的新执行内核。 Gandiva为Arrow缓冲区的低级操作提供了显着的性能改进。 我们首先在Dremio中包含了这项工作,以提高平台上分析工作负载的效率和性能,这些功能将被Dremio 3.0的用户使用。 在这篇文章中,我将描述该倡议的动机,实施细节,一些绩效结果以及一些未来计划。

名称上的注释:Gandiva是神话般的弓箭,出自印度史诗摩ab 婆罗多》 ,由英雄阿朱纳(Arjuna)使用。 根据故事,甘地瓦是坚不可摧的,它使射出的箭的力量提高了千倍。

了解Apache Arrow

在过去的几十年中,数据,数据库和数据分析发生了巨大变化。 这些更改背后的原因有很多:

  • 组织对分析和使用数据的要求越来越复杂。 以及越来越高的查询性能标准。
  • 内存已变得不昂贵,从而可以基于内存中的分析启用一套新的性能策略。
  • CPU和GPU的性能有所提高,但也已经发展到可以并行优化数据的处理。
  • 针对不同用例出现了新型的数据库,每种都有其自己的存储和索引数据的方式。
  • 已经出现了新的学科,包括数据工程和数据科学,每种学科都有数十种新工具来实现特定的分析目标。
  • 列式数据表示已成为分析工作负载的主流,因为它们在速度和效率方面都具有显着的优势。

考虑到这些趋势,为现代开放标准提供了明显的机会,该标准涵盖了内存表示和每个引擎可以使用的相关低级数据处理库。 该标准应利用现有的所有新性能策略,并使跨平台的数据共享无缝且高效。 这是Apache Arrow的目标。

打个比方,考虑在欧盟之前度假去欧洲旅行。 要在7天之内访问五个国家,您可以指望您要在边境花费几个小时进行护照检查,并且您将在货币兑换中损失一些钱这一事实。

这就是在没有Arrow的情况下处理内存中数据的方式。 存在对序列化和反序列化数据结构的极大的低效率,并且在此过程中进行了复制,浪费了宝贵的内存和CPU / GPU资源。 相比之下,艾罗就像是继欧盟和欧元之后访问欧洲。 您无需在边境等待,到处都使用一种货币。

Arrow将列式数据结构的优点与内存中计算相结合。 它提供了这些现代技术的性能优势,同时还提供了复杂数据和动态模式的灵活性。 它以开放和标准化的方式完成所有这些工作。

了解Apache Arrow本身不是存储或执行引擎很重要。 与您所安装的系统相反,Apache Arrow是一个库,它旨在用作以下类型系统的共享基础:

  • 数据分析系统(例如Pandas和Spark)
  • 流和排队系统&#x

你可能感兴趣的:(数据结构,大数据,数据库,python,人工智能)