Skip to content

Conversation

jackye1995
Copy link
Collaborator

Summary

  • Implements Apache Gravitino integration for Lance namespace management
  • Adds generic RestClient reuse for Gravitino REST API operations
  • Creates comprehensive Gravitino namespace documentation
  • Follows the same pattern as Unity Catalog implementation from feat: add Unity Catalog namespace implementation #201

Changes

New Gravitino Namespace Module (lance-namespace-gravitino)

  • Full implementation of Lance namespace interface for Apache Gravitino
  • Support for Gravitino's 4-level namespace hierarchy (metalake.catalog.schema.table)
  • Creates Lance tables with custom properties for identification
  • Authentication via bearer tokens

RestClient Reuse (lance-namespace-core)

  • Leverages existing generic HTTP client for REST operations
  • Connection pooling and retry logic with exponential backoff
  • Comprehensive error handling for Gravitino API responses

Documentation

  • Gravitino namespace specification (docs/src/impls/gravitino.md)
  • Configuration properties and authentication methods
  • Table definition requirements for Lance tables in Gravitino
  • Type mapping between Arrow and Gravitino schemas

Key Features

  • Tables stored with format=lance property for identification
  • provider set to lance to specify the data provider
  • Storage location points to actual Lance table data
  • Support for schema CRUD operations within configured catalog
  • Support for table CRUD operations with proper type conversion
  • Compatible with Gravitino REST API v1

Implementation Details

The implementation follows the exact same pattern as the Unity Catalog integration (#201):

  1. Namespace Hierarchy: Works within pre-configured metalake and catalog (read-only at these levels)
  2. Schema Management: Full CRUD operations for schemas (databases)
  3. Table Management: Full CRUD operations for Lance tables with proper metadata
  4. Type Conversion: Comprehensive mapping between Arrow and Gravitino type systems
  5. REST Client: Reuses the generic RestClient from lance-namespace-core

Test Plan

  • Unit tests with WireMock for API simulation
  • Integration tests with Gravitino deployment
  • Manual testing with Gravitino server
  • Verify table creation and metadata management

Related

🤖 Generated with Claude Code

## Summary
- Implements Apache Gravitino integration for Lance namespace management
- Adds generic RestClient reuse for Gravitino REST API operations
- Creates comprehensive Gravitino namespace documentation
- Follows the same pattern as Unity Catalog implementation

## Changes

### New Gravitino Namespace Module (`lance-namespace-gravitino`)
- Full implementation of Lance namespace interface for Apache Gravitino
- Support for Gravitino's 4-level namespace hierarchy (metalake.catalog.schema.table)
- Creates Lance tables with custom properties for identification
- Authentication via bearer tokens

### RestClient Reuse (`lance-namespace-core`)
- Leverages existing generic HTTP client for REST operations
- Connection pooling and retry logic with exponential backoff
- Comprehensive error handling for Gravitino API responses

### Documentation
- Gravitino namespace specification (`docs/src/impls/gravitino.md`)
- Configuration properties and authentication methods
- Table definition requirements for Lance tables in Gravitino
- Type mapping between Arrow and Gravitino schemas

## Key Features
- Tables stored with `format=lance` property for identification
- `provider` set to `lance` to specify the data provider
- Storage location points to actual Lance table data
- Support for schema CRUD operations within configured catalog
- Support for table CRUD operations with proper type conversion
- Compatible with Gravitino REST API v1

## Test plan
- [x] Unit tests with WireMock for API simulation
- [ ] Integration tests with Gravitino deployment
- [ ] Manual testing with Gravitino server
- [ ] Verify table creation and metadata management

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@github-actions github-actions bot added enhancement New feature or request java Java features labels Aug 24, 2025
…entations

- Remove unnecessary README.md from gravitino module
- Simplify gravitino.md to be concise like other implementations
- Remove gravitino. prefix from configuration properties
- Focus only on namespace mapping, table definition, and configuration
- Remove metalake and catalog from configuration properties
- Parse metalake.catalog.schema from namespace identifiers
- Update all API paths to extract hierarchy levels from namespaces
- Fix tests to use full 3-level namespace paths
- Update gravitino.md to reflect the namespace mapping correctly
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request java Java features
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant