什么是 Apache Arrow?

Apache Arrow 是一系列库,使大型数据系统能够快速有效地处理和传输数据。它被 AWS Data Wrangler、python 库 Pandas、MATLAB 和许多其他技术使用。 Apache Arrow 的主要组件是内存中的列格式规范,用于在内存中表示类似表格的数据集。

箭头柱状格式

这种格式用于数据处理有两个优点。首先,通过这种格式处理数据非常快。下图很好地展示了数据在内存中的存储方式。其次,这种格式与语言无关。这意味着在不同编程语言或不同数据库之间传输数据很简单。通常,为了处理大量数据,数据处理工程师会创建自定义数据结构来表示内存中的数据集,并开发序列化接口以将数据结构转换为不同的文件格式或其他数据传输接口。这导致在开发过程中浪费了大量时间。

柱状数据格式来源:https://arrow.apache.org/overview/

我什么时候使用 Apache Arrow?

如果您正在处理大量结构化数据,或者您正在处理许多不同连接技术之间的大型结构化数据传输,Apache Arrow 是一个不错的选择。例如,Java 应用程序可以对源自 JVM 的数据调用 C 或 C++ 算法。

Python 中的一个示例

这显示了如何读取 csv 文件并将其处理为 Arrow Columnar 格式。 (对于大型数据集,使用 Apache Parquet 等不同的文件格式可能会更有效)

import pyarrow as pa
import pyarrow.csv as pacsv

# Get the csv in the same file directory
fn = 'apacheArrowExample0.csv'

# Read the csv file
table = pacsv.read_csv(fn)

# Create the schema for our csv file as a pyarrow Table
pa.Table
id: pa.int32()
firstname: pa.string()
lastname: pa.string()
dateofbirth: pa.date32()

# See that our csv data is formatted as a Apache Arrow Columnar data format
print(table)

"""
pyarrow.Table
id: int64
firstname: string
lastname: string
dateofbirth: date32[day]
----
id: [[1,2,3,4,5,6,7,8,9,10,...]]
firstname: [["Coral","Lucille","Marcy","Christian","Margarette","Vanessa","Christal","Anallese","Aaren","Christian",...]]
lastname: [["Killigrew","Chick","Read","Marden","Chapland","Nedrud","Mott","Johanna","Norrie","Bahr",...]]
dateofbirth: [[1917-01-15,1900-09-15,2018-03-27,1975-09-24,1929-10-31,1987-12-10,1995-12-26,1981-05-28,1914-07-04,1933-04-08,...]]

"""

进入全屏模式 退出全屏模式

有关 Apache Arrow 的更多信息,请访问https://arrow.apache.org/

如果您有任何问题或反馈,请发表评论。

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐