Skip to content

apache/iceberg-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Iceberg Golang

Go Reference

iceberg is a Golang implementation of the Iceberg table spec.

Build From Source

Prerequisites

  • Go 1.23 or later

Build

$ git clone https://github.com/apache/iceberg-go.git
$ cd iceberg-go/cmd/iceberg && go build .

Feature Support / Roadmap

FileSystem Support

Filesystem Type Supported
S3 X
Google Cloud Storage
Azure Blob Storage
Local Filesystem X

Metadata

Operation Supported
Get Schema X
Get Snapshots X
Get Sort Orders X
Get Partition Specs X
Get Manifests X
Create New Manifests X
Plan Scan x
Plan Scan for Snapshot x

Catalog Support

Operation REST Hive DynamoDB Glue SQL
Load Table X X X
List Tables X X X
Create Table X X X
Update Current Snapshot
Create New Snapshot
Rename Table X X X
Drop Table X X X
Alter Table X
Set Table Properties X X
Create Namespace X X X
Check Namespace Exists X X
Drop Namespace X X X
Set Namespace Properties X X X
List View X
Drop View X
Check View Exists X

Read/Write Data Support

  • No intrinsic support for writing data yet.
  • Plan to add Apache Arrow support eventually.
  • Data can currently be read as an Arrow Table or as a stream of Arrow record batches.

CLI Usage

Run go build ./cmd/iceberg from the root of this repository to build the CLI executable, alternately you can run go install github.com/apache/iceberg-go/cmd/iceberg to install it to the bin directory of your GOPATH.

The iceberg CLI usage is very similar to pyiceberg CLI
You can pass the catalog URI with --uri argument.

Example: You can start the Iceberg REST API docker image which runs on default in port 8181

docker pull tabulario/iceberg-rest:latest
docker run -p 8181:8181 tabulario/iceberg-rest:latest

and run the iceberg CLI pointing to the REST API server.

 ./iceberg --uri http://0.0.0.0:8181 list
┌─────┐
| IDs |
| --- |
└─────┘

Create Namespace

./iceberg --uri http://0.0.0.0:8181 create namespace taxitrips

List Namespace

 ./iceberg --uri http://0.0.0.0:8181 list
┌───────────┐
| IDs       |
| --------- |
| taxitrips |
└───────────┘


Get in Touch