GridDB Pythonクライアント
GridDB Pythonクライアントをリニューアルしました。
これまではGridDB C API(Cクライアント)経由でサーバへの操作を提供していましたが、 様々な機能強化のために、 JPypeを利用してGridDB Java API(Javaクライアント)経由で サーバへの操作を提供します。
また、大量データ操作を高速化するために、Apache Arrowを利用したインタフェースも 提供します。
以下の環境でPythonクライアントのビルドとサンプルプログラムの実行を確認しています。
OS: Ubuntu 22.04 (x64) / RockyLinux 9.4 (x64) / Windows 11 (x64) / MacOS 12 (x86_64)
Python: 3.12
Java: 8
GridDB Java API: V5.8 CE
GridDB Server: V5.8 CE, Ubuntu 22.04 (x64)
本リポジトリにはGridDB Pythonクライアント以外に、GridDB JavaAPI Adapter for Apache Arrowも含みます。 GridDB Pythonクライアントを動かすために、GridDB JavaAPI Adapter for Apache Arrowが必要になります。
(GridDB JavaAPI Adapter for Apache Arrow)
$ cd java
$ mvn install
$ cd ..
targetフォルダ上に、gridstore-arrow-X.Y.Z.jarファイルが生成されます。
(GridDB Pythonクライアント)
$ cd python
$ python -m pip install .
$ cd ..
JPype, pyarrow, GridDB Pythonクライアント(griddb_python)がインストールされます。
事前にGridDBサーバを起動しておく必要があります。
$ cd sample- sampleフォルダ上にGridDB Java APIのダウンロード
$ curl -L -o gridstore.jar https://repo1.maven.org/maven2/com/github/griddb/gridstore/5.8.0/gridstore-5.8.0.jar- sampleフォルダ上にGridDB JavaAPI Adapter for Apache Arrowの配置
$ cp ../java/target/gridstore-arrow-X.Y.Z.jar gridstore-arrow.jar- 実行
$ python3 sample1.py <GridDB notification address> <GridDB notification port>
<GridDB cluster name> <GridDB user> <GridDB password>
--> Person: name=name02 status=False count=2 lob=[65, 66, 67, 68, 69, 70, 71, 72, 73, 74]Pythonプログラムの先頭に以下の記述をしてください。
import jpype
jpype.startJVM(classpath=["./gridstore.jar", "./gridstore-arrow.jar"])
import griddb_python as griddbなお、環境変数CLASSPATHにJava APIのgridstore.jarファイル とGridDB JavaAPI Adapter for Apache Arrowのgridstore-arrow.jar を設定すると、 「jpype」のインポートやJVMの起動の記述なしで、従来のPythonクライアントと同じ方法(import griddb_python as griddbのみの記述)で使うことができます。
$ export CLASSPATH=$CLASSPATH:./gridstore.jar:./gridstore-arrow.jarimport griddb_python as griddb(利用できる主な機能)
- STRING型, BOOL型, BYTE型, SHORT型, INTEGER型, LONG型, FLOAT型, DOUBLE型, TIMESTAMP型(ミリ秒精度), BLOB型
- GEOMETRY型、マイクロ秒・ナノ秒精度のTIMESTAMP型 [Pythonクライアント V5.8以降]
- キーを使ったデータ登録・取得(Put/Get)
- NoSQLインタフェース用の検索言語TQLによる検索・集計
- MultiPut/Get/Query (バッチ処理)
- Apache Arrowを使ったPut/Get/Fetch [Pythonクライアント V5.8以降]
- パーティショニングされたテーブルへの上記操作 [Pythonクライアント V5.8以降]
- 複合ロウキー、複合索引 [Pythonクライアント V5.8以降]
(Pythonクライアント V0.8対比で利用できない機能)
- 配列型
- 時系列特化の関数(集計、サンプリングなど)
- 暗黙的データ型変換
詳細は以下のファイルをご覧ください
※ GridDB JavaAPI Adapter for Apache ArrowのJarパッケージはMaven Central Repository上に、GridDB Python ClientのWHLパッケージはPyPI上にあります。
- Issues
質問、不具合報告はissue機能をご利用ください。 - PullRequest
GridDB Contributor License Agreement(CLA_rev1.1.pdf)に同意して頂く必要があります。 PullRequest機能をご利用の場合はGridDB Contributor License Agreementに同意したものとみなします。
GridDB PythonクライアントのライセンスはApache License, version 2.0です。
Apache Arrow, Arrow are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.