【Python】Pyarrowインストール(Apache Arrow)

【Python】Pyarrowインストール(Apache Arrow) プログラミング

「PythonでApache Arrow形式のデータを処理したい」
「Pythonでビッグデータを高速に対応したい」
「インメモリの列指向で大量データを扱いたい」

このような場合には、Pyarrowがオススメです。
この記事では、Pyarrowについて解説しています。

本記事の内容

  • Pyarrowとは?
  • Pyarrowのシステム要件
  • Pyarrowのインストール
  • Pyarrowの動作確認

それでは、上記に沿って解説していきます。

Pyarrowとは?

Pyarrowは、Apache Arrow形式ファイルを扱うためのPythonライブラリです。
Apache Arrow形式は、列(カラム)指向データ構造となります。

これに対して、リレーショナル・データベースは行指向のデータ構造となります。

おそらく、行指向のデータ構造の方が見慣れたモノでしょう。
ただ、行指向のデータ構造だと速度の面で問題が出てきています。

その問題を列指向データ構造は解決します。
つまり、列指向データ構造は大量データを高速に処理できるということです。

Pythonでは、機械学習の処理を行う際にビッグデータを扱うことが多いです。
また、統計や分析でも大量のデータを扱うことは多いでしょう。

そんな場合には、インメモリの列指向データ処理は効果を発揮します。
そして、そのときにPyarrowが大活躍するということです。

以上、Pyarrowについて説明しました。
次は、Pyarrowのシステム要件を確認します。

Pyarrowのシステム要件

現時点(2022年3月)でのPyarrowの最新バージョンは、7.0.0となります。
この最新バージョンは、2022年2月4日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

サポート対象となるPythonのバージョンは、以下となっています。

  • Python 3.7
  • Python 3.8
  • Python 3.9
  • Python 3.10

Pyarrowは、以下のPython公式開発サイクルに準じています。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

まだまだ、Python 3.6をサポートするライブラリは多く存在します。
逆に、Python 3.10に未サポートのライブラリも多くあります。

そんな中で、Pyarrowは適切にPython公式開発サイクルとリンクしています。
こういうのを見ると、Pyarrowというライブラリへの信用度がUPします。

以上、Pyarrowのシステム要件を説明しました。
次は、Pyarrowをインストールします。

Pyarrowのインストール

検証は、次のバージョンのPythonで行います。

$ python -V
Python 3.10.2

まずは、現状のインストール済みパッケージを確認しておきます。

$ pip list
Package    Version
---------- -------
pip        22.0.4
setuptools 60.9.3
wheel      0.36.2

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、Pyarrowのインストールです。
Pyarrowのインストールは、以下のコマンドとなります。

pip install pyarrow

インストールには、それほど時間がかかりません。
終了したら、どんなパッケージがインストールされたのかを確認します。

$ pip list
Package    Version
---------- -------
numpy      1.22.3
pip        22.0.4
pyarrow    7.0.0
setuptools 60.9.3
wheel      0.36.2

Numpyに依存していることが確認できます。
Numpyについては、次の記事で説明しています。

それ以外には、Pyarrowが依存するパッケージはありません。
その意味では、比較的容易に既存環境へのPyarrowを導入できそうです。

以上、Pyarrowのインストールを説明しました。
次は、Pyarrowの動作確認を行います。

Pyarrowの動作確認

Apache Arrowの特徴である列指向データストアを確認します。
行指向であれば、5行分となるデータを作成します。

そのためのコードが、以下。
5人分の誕生日を列指向でメモリ上に作成します。

import pyarrow as pa

days = pa.array([1, 12, 17, 23, 28], type=pa.int8())
months = pa.array([1, 3, 5, 7, 1], type=pa.int8())
years = pa.array([1990, 2000, 1995, 2000, 1995], type=pa.int16())

birthdays_table = pa.table([days, months, years],
                           names=["days", "months", "years"])

print(birthdays_table)

上記を実行すると、以下の結果となります。

pyarrow.Table
days: int8
months: int8
years: int16
----
days: [[1,12,17,23,28]]
months: [[1,3,5,7,1]]
years: [[1990,2000,1995,2000,1995]]

メタデータ部分が、以下の部分です。

pyarrow.Table
days: int8
months: int8
years: int16

そして、列指向で保存されている実データが以下の部分となります。

days: [[1,12,17,23,28]]
months: [[1,3,5,7,1]]
years: [[1990,2000,1995,2000,1995]]

とりあえず、Pyarrowの動作確認としてはこれで十分でしょう。
速度の検証は、別途行いたいと思います。

以上、Pyarrowの動作確認を説明しました。

タイトルとURLをコピーしました