Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Introduction

Apache Gravitino is a high-performance, geo-distributed, and federated metadata lake. It manages the metadata directly in different sources, types, and regions, also provides users the unified metadata access for data and AI assets.

Gravitino Python client helps data scientists easily manage metadata using Python language.

gravitino-python-client-introduction

Usage

Use Gravitino Python client library with Spark, PyTorch, Tensorflow, Ray and Python environment.

First of all, You must have a Gravitino server set up and run, You can refer document of How to install Gravitino to build Gravitino server from source code and install it in your local.

Python Client API

pip install apache-gravitino
  1. Manage metalake using Gravitino Python API
  2. Manage fileset metadata using Gravitino Python API

Fileset Example

We offer a playground environment to help you quickly understand how to use Gravitino Python client to manage non-tabular data on HDFS via Fileset in Gravitino. You can refer to the document How to use the playground to launch a Gravitino server, HDFS and Jupyter notebook environment in you local Docker environment.

Waiting for the playground Docker environment to start, you can directly open http://localhost:18888/lab/tree/gravitino-fileset-example.ipynb in the browser and run the example.

The gravitino-fileset-example contains the following code snippets:

  1. Install HDFS Python client.
  2. Create a HDFS client to connect HDFS and to do some test operations.
  3. Install Gravitino Python client.
  4. Initialize Gravitino admin client and create a Gravitino metalake.
  5. Initialize Gravitino client and list metalakes.
  6. Create a Gravitino Catalog and special type is Catalog.Type.FILESET and provider is fileset
  7. Create a Gravitino Schema with the location pointed to a HDFS path, and use hdfs client to check if the schema location is successfully created in HDFS.
  8. Create a Fileset with type is Fileset.Type.MANAGED, use hdfs client to check if the fileset location was successfully created in HDFS.
  9. Drop this Fileset.Type.MANAGED type fileset and check if the fileset location was successfully deleted in HDFS.
  10. Create a Fileset with type is Fileset.Type.EXTERNAL and location pointed to exist HDFS path
  11. Drop this Fileset.Type.EXTERNAL type fileset and check if the fileset location was not deleted in HDFS.

Python Client Development

Use any IDE to develop Gravitino Python Client. Directly open the client-python module project in the IDE.

Prerequisites

Build and Test

  1. Clone the Gravitino project.

    git clone git@github.com:apache/gravitino.git
    
  2. Build the Gravitino Python client module

    # Default Python version is 3.12
    ./gradlew :clients:client-python:build
    # If you want to build Python client with specific Python version,
    # add `-PpythonVersion` with version number:
    ./gradlew :clients:client-python:build -PpythonVersion=3.11
    
  3. Run unit tests

    ./gradlew :clients:client-python:test -PskipITs
    
  4. Run integration tests

    Because Python client connects to Gravitino Server to run integration tests, So it runs ./gradlew compileDistribution -x test command automatically to compile the Gravitino project in the distribution directory. When you run integration tests via Gradle command or IDE, Gravitino integration test framework (integration_test_env.py) will start and stop Gravitino server automatically.

    ./gradlew :clients:client-python:test
    
  5. Distribute the Gravitino Python client module

    ./gradlew :clients:client-python:distribution
    
  6. Deploy the Gravitino Python client to https://pypi.org/project/apache-gravitino/

    ./gradlew :clients:client-python:deploy
    

IDE Specific Settings

JetBrains IntelliJ IDEA

We use Conda Environment to manage Python Environment, to configure Python SDK, you need to:

  1. Make sure you installed Python Plugin.

  2. Make sure you followed the step to build python module in Build and Test

  3. Make sure you are at the root directory of Gravitino Git repository.

  4. Find conda executable by executing this command

    find $(pwd)/.gradle/python/*/Miniforge3/bin/conda
    
    # example output
    /Users/YOUR_USER_NAME/gravitino/.gradle/python/MacOSX/Miniforge3/bin/conda
    
  5. Find Python Interpreter with this command:

    find $(pwd)/.gradle/python/*/Miniforge3/envs/*/bin/python
    
    # example output
    /Users/YOUR_USER_NAME/gravitino/.gradle/python/MacOSX/Miniforge3/envs/python-3.12/bin/python
    
  6. Follow steps in Create a conda environment, and at step 5, choose Existing conda environment

  7. Fill in the output from step 4 into Conda executable field, step 5 into Interpreter field. Configure conda_env And you will see a new Python SDK is added, and it has several packages installed. Add Platform SDK

  8. Set clients/client-python module sdk to the one we set in previous step. Configure python module sdk

  9. Done! Now, open any python files and start developing Gravitino Python Client.

Running Integration Tests in IntelliJ IDEA

Since integration tests require Gravitino Java distribution, so you cannot run tests with IntelliJ Run tests button, Please execute this gradle task with Gradle Plugin or in command line to run integration tests.

./gradlew clients:client-python:integrationTest

Or, you would see errors like:

...
ERROR:tests.integration.integration_test_env:Gravitino Python client integration test must configure `GRAVITINO_HOME`

Process finished with exit code 0

Resources

License

Gravitino is under the Apache License Version 2.0, See the LICENSE for the details.

Metadata

Release files for apache-gravitino 1.3.1rc2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for apache-gravitino 1.3.1rc2
File Size Uploaded
apache_gravitino-1.3.1rc2.tar.gz 227.3 kB Details

Release files / apache_gravitino-1.3.1rc2.tar.gz

Download URL apache_gravitino-1.3.1rc2.tar.gz
Size 227.3 kB
Tags Source
SHA-256 checksum
How to use checksums
65e2d412c8c7ab70f1fcc81ac867dca210a511bd7d799926478ee4d7d27d143d
BLAKE2b-256 checksum
How to use checksums
530eadab9f7f3dc17f5ed1a87eb6d9fe6ce135ce16f6c82042c2ca2d92469b7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release history Release notifications | RSS feed

1.3.1

1 release file

This release

1.3.1rc2 This release

1 release file

1.3.0

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.9.1

1 release file

0.9.0

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.0

1 release file

0.6.1

1 release file

0.6.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page