Apache Arrow 内存数据

简介: 1.概述   Apache Arrow 是 Apache 基金会全新孵化的一个顶级项目。它设计的目的在于作为一个跨平台的数据层,来加快大数据分析项目的运行速度。 2.内容   现在大数据处理模型很多,用户在应用大数据分析时,除了将 Hadoop 等大数据平台作为一个存储和批处理平台之外,同样也得关注系统的扩展性和性能。

1.概述

  Apache Arrow 是 Apache 基金会全新孵化的一个顶级项目。它设计的目的在于作为一个跨平台的数据层,来加快大数据分析项目的运行速度。

2.内容

  现在大数据处理模型很多,用户在应用大数据分析时,除了将 Hadoop 等大数据平台作为一个存储和批处理平台之外,同样也得关注系统的扩展性和性能。过去开源社区已经发布了很多工具来完善大数据分析的生态系统,这些工具包含了数据分析的各个层面,例如列式存储格式(Parquet,ORC),内存计算模型(Drill,Spark,Impala 和 Storm)以及其强大的 API 接口。而 Arrow 则是最新加入的一员,它提供了一种跨平台应用的内存数据交换格式。

  在数据快速增长和复杂化的情况下,提高大数据分析性能一个重要的途径是对列式数据的设计和处理。列式数据处理借助了向量计算和 SIMD 使我们可以充分挖掘硬件的潜力。而 Apache Drill 其大数据查询引擎无论是在硬盘还是内存中数据都是以列的方式存在的,而 Arrow 就是由 Drill 中的 Value Vector 这一数据格式发展而来。此外,Arrow 也支持关系型和动态数据集。

  Arrow 的诞生为大数据生态带来了很多可能性,有了 Arrow 作为今后标准数据交换格式,各个数据分析的系统和应用之间的交互性可以说是揭开了新的篇章。过去大部分的 CPU 周期都花在了数据的序列化与反序列化上,现在我们则能够实现不同系统之间数据的无缝链接。这意味着使用者在不同系统结合时,不用在数据格式上话费过多的时间。

3.Arrow Group

  Arrow 的内存数据结构如下所示:

  从上图中,我们可以很清晰的看出,传统的内存数据格式,各个字段的分布是以没一行呈现,相同字段并未集中排列在一起。而通过 Arrow 格式化后的内存数据,可以将相同字段集中排列在一起。我们可以很方便的使用 SQL 来操作数据。

  传统的访问各个数据模型中的数据以及使用 Arrow 后的图,如下所示:

  通过上图可以总结出以下观点:

  • 每个系统都有属于自己的内存格式。
  • 70~80% 的 CPU 浪费在序列化和反序列化上。
  • 在多个项目都实现的类似的功能(Copy & Convert)。

  而在看上述使用 Arrow 后,得出以下结论:

  • 所有的系统都使用相同的内存格式。
  • 没有跨系统通信开销。
  • 项目可以贡献功能(比如,Parquet 到 Arrow 的读取)。

4.Arrow 数据格式

  Arrow 列式数据格式如下所示:

persons = [{
    name: 'wes',
    iq: 180,
    addresses: [
    {number: 2, street 'a'},
    {number: 3, street 'bb'}
    ]
}, {
    name: 'joe',
iq: 100,
addresses: [
{number: 4, street 'ccc'}, {number: 5, street 'dddd'}, {number: 2, street 'f'}
]
}]

  从上述 JSON 数据格式来看,person.iq 分别是 180 和 100,以如下方式排列:

  而 persons.addresses.number 的排列格式如下所示:

5.特性

5.1 Fast

  Apache Arrow 执行引擎,利用最新的SIMD(单输入多个数据)操作包括在模型处理器,用于分析数据处理本地向量优化。数据的列式布局也允许更好地利用 CPU 缓存,将所有与列操作相关的数据以尽可能紧凑的格式放置。

5.2 Flexible

  Arrow 扮演着高性能的接口在各个复杂的系统中,它也支持工业化的编程语言。Java,C,C++,Python 以及今后更多的语言。

5.3 Standard

  Apache Arrow 由 13 个开源项目开发者支持,包含 Calcite, Cassandra, Drill, Hadoop, HBase, Ibis, Impala, Kudu, Pandas, Parquet, Phoenix, Spark, 和 Storm。

6.Example

  使用 Python 来处理 Spark 或是 Drill 中的数据,如下图所示:

  • 快速的、语言无关的二进制数据帧格式的文件。
  • 使用 Python 去写。
  • 读取速度接近磁盘 IO 性能。

  部分实现示例代码,如下所示:

import feather
path = 'my_data.feather'
feather.write_dataframe(df, path)
df = feather.read_dataframe(path)

7.总结

  Apache Arrow 当前发布了 0.1.0 第一个版本,官方目前获取的资料的信息较少,大家可以到官方的 JIRA 上获取更多咨询信息,以及 Arrow 提供的开发者聊天室去获取更多的帮助。

8.结束语

  这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

联系方式:
邮箱:smartloli.org@gmail.com
Twitter: https://twitter.com/smartloli
QQ群(Hadoop - 交流社区1): 424769183
温馨提示:请大家加群的时候写上加群理由(姓名+公司/学校),方便管理员审核,谢谢!

热爱生活,享受编程,与君共勉!


作者:哥不是小萝莉 [关于我][犒赏

出处:http://www.cnblogs.com/smartloli/

转载请注明出处,谢谢合作!

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
Apache 流计算 OceanBase
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
本文介绍了如何将数据从 OceanBase 迁移到阿里云数据库 SelectDB 内核版 Apache Doris。提供 3 种数据同步方法 1. 使用 DataX,下载 DataX 并编写配置文件,通过 OceanBaseReader 和 DorisWriter 进行数据迁移。 2. 利用 Apache Doris 的 Catalog功 能,将 OceanBase 表映射到 Doris 并插入数据。 3. 通过Flink CDC,设置 OceanBase 环境,配置 Flink 连接器,实现实时数据同步。
2161 0
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
|
8月前
|
存储 人工智能 数据处理
Apache Doris 2025 Roadmap:构建 GenAI 时代实时高效统一的数据底座
秉承“以场景驱动创新” 的核心理念,持续深耕三大核心场景的关键能力,并对大模型 GenAI 场景的融合应用进行重点投入,为智能时代构建实时、高效、统一的数据底座。
462 10
Apache Doris 2025 Roadmap:构建 GenAI 时代实时高效统一的数据底座
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
479 1
|
10月前
|
存储 运维 监控
从 ClickHouse 到 Apache Doris:在网易云音乐日增万亿日志数据场景下的落地
日志数据已成为企业洞察系统状态、监控网络安全及分析业务动态的宝贵资源。网易云音乐引入 Apache Doris 作为日志库新方案,替换了 ClickHouse。解决了 ClickHouse 运维复杂、不支持倒排索引的问题。目前已经稳定运行 3 个季度,规模达到 50 台服务器, 倒排索引将全文检索性能提升7倍,2PB 数据,每天新增日志量超过万亿条,峰值写入吞吐 6GB/s 。
710 5
从 ClickHouse 到 Apache Doris:在网易云音乐日增万亿日志数据场景下的落地
|
10月前
|
存储 SQL 数据挖掘
数据无界、湖仓无界, Apache Doris 湖仓一体解决方案全面解读(上篇)
湖仓一体架构融合了数据湖的低成本、高扩展性,以及数据仓库的高性能、强数据治理能力,高效应对大数据时代的挑战。为助力企业实现湖仓一体的建设,Apache Doris 提出了数据无界和湖仓无界核心理念,并结合自身特性,助力企业加速从 0 到 1 构建湖仓体系,降低转型过程中的风险和成本。本文将对湖仓一体演进及 Apache Doris 湖仓一体方案进行介绍。
988 1
数据无界、湖仓无界, Apache Doris 湖仓一体解决方案全面解读(上篇)
|
消息中间件 Java Kafka
实时计算 Flink版操作报错之Apache Flink中的SplitFetcher线程在读取数据时遇到了未预期的情况,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
862 14
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
322 1
|
SQL 大数据 Apache
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
202 1
|
分布式计算 监控 大数据
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
285 1

推荐镜像

更多