Apache Iceberg - Go https://go.iceberg.apache.org/
  • Go 99.4%
  • Shell 0.3%
  • Python 0.1%
  • Java 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Minh Vu 2e69b8adb8
perf(internal): avoid quadratic packing with large lookback (#2363)
* perf(internal): avoid quadratic packing with large lookback

Signed-off-by: Minh Vu <vuhoangminh97@gmail.com>

* test(internal): compare indexed packing with linear across weight transitions

* fix(internal): correct reverse iterator test declaration

* test(internal): use integer range in packing test

---------

Signed-off-by: Minh Vu <vuhoangminh97@gmail.com>
2026-11-05 15:12:15 -05:00
.github build(deps): bump zizmorcore/zizmor-action from 0.7.1 to 0.8.0 (#2386) 2026-11-04 10:52:35 -05:00
catalog refactor!: thread context through manifest and deletion-vector reads (#2357) 2026-11-05 12:30:12 -05:00
cmd/iceberg refactor!: thread context through manifest and deletion-vector reads (#2357) 2026-11-05 12:30:12 -05:00
codec refactor!: remove ManifestFile.FetchEntries and DataFile.DistinctValueCounts (#2179) 2026-10-13 13:31:11 +01:00
config refactor(config)!: use one error-returning config loader (#2294) 2026-10-26 15:51:09 +00:00
dev feat(table): add Theta sketch NDV helper (#2347) 2026-11-05 12:11:34 -05:00
encryption refactor(encryption)!: replace global KMS registration with isolated registries (#2296) 2026-10-27 15:40:22 +01:00
internal perf(internal): avoid quadratic packing with large lookback (#2363) 2026-11-05 15:12:15 -05:00
io refactor(io)!: make writes and walks context-aware (#2336) 2026-10-27 11:47:40 -04:00
metrics chore: use modernize to improve code (#1836) 2026-08-17 12:50:48 -04:00
puffin feat(puffin): write compressed blobs (#2401) 2026-11-04 13:05:04 -05:00
table perf(compaction): reduce split task normalization work (#2377) 2026-11-05 15:10:13 -05:00
testdata fix(manifest): infer manifest list version from the embedded writer schema (#1762) 2026-08-12 14:38:18 -04:00
udf refactor(udf)!: remove NewSQLRepresentation in favor of struct literals (#2318) 2026-10-26 19:28:21 +00:00
utils refactor(aws)!: standardize exported AWS initialisms (#2310) 2026-10-25 10:11:41 +01:00
view fix!: store binary and fixed defaults as hex strings in schemas (#2372) 2026-11-05 12:11:59 -05:00
website refactor!: thread context through manifest and deletion-vector reads (#2357) 2026-11-05 12:30:12 -05:00
.asf.yaml INFRA: Use PR titles for squash commits (#1649) 2026-08-04 16:26:37 -07:00
.gitattributes ci: run lint-and-test on the real os matrix (#1264) 2026-06-23 18:20:32 -04:00
.gitignore feat: add support for azure blob with connection string/sas token/account key (#313) 2025-04-02 13:37:52 -04:00
.golangci.yml ci: enable modernize linter (#2072) 2026-09-30 15:43:52 +02:00
.pre-commit-config.yaml build: bump minimum Go version to 1.26 (#2077) 2026-09-30 21:12:42 +02:00
AGENTS.md docs: add Iceberg security model (#1137) 2026-05-28 15:54:12 -04:00
bound_set_extrema_internal_test.go perf(table): fast-path IN metrics pruning with extrema (#2117) 2026-10-13 07:30:13 -04:00
bound_set_literal_view.go perf(expr): speed up bound literal set copies (#2126) 2026-10-06 13:46:15 -04:00
bound_set_literal_view_bench_test.go perf(expr): speed up bound literal set copies (#2126) 2026-10-06 13:46:15 -04:00
bound_set_literal_view_internal_test.go fix!: reject NaN literals when binding predicates (#2432) 2026-11-04 13:29:14 -05:00
bound_set_literal_view_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
CLAUDE.md Symlink CLAUDE.md to AGENTS.md (#1887) 2026-08-26 16:07:28 -04:00
CONTRIBUTING.md test(catalog/rest): run conformance suite against external REST catalogs, with Polaris in CI (#2190) 2026-10-21 22:28:56 +01:00
data_file_codec.go refactor(partitions,sorting)!: make first-source access explicit (#2304) 2026-10-25 10:10:53 +01:00
data_file_codec_bench_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
data_file_codec_fingerprint_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
data_file_codec_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
data_file_refs.go perf(table): avoid cloning parquet split offsets during scans (#2118) 2026-10-20 22:44:02 +02:00
data_file_refs_test.go perf(table): avoid cloning parquet split offsets during scans (#2118) 2026-10-20 22:44:02 +02:00
defaults.go fix!: store binary and fixed defaults as hex strings in schemas (#2372) 2026-11-05 12:11:59 -05:00
defaults_test.go fix!: store binary and fixed defaults as hex strings in schemas (#2372) 2026-11-05 12:11:59 -05:00
environment_context.go feat(metrics): include environment context in commit reports (#1680) 2026-08-13 12:56:14 +02:00
environment_context_test.go feat(metrics): include environment context in commit reports (#1680) 2026-08-13 12:56:14 +02:00
errors.go feat(table): variant predicate pushdown and reject variant partition source (#1607) 2026-09-04 16:29:33 -04:00
expr_bbox_test.go feat(expr): bbox predicate evaluation for geo pruning (#1597) 2026-07-29 23:32:22 +02:00
expr_json.go fix(exprs): limit the literal wrapper to predicate values (#2246) 2026-10-21 21:46:54 +01:00
expr_json_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
exprs.go fix!: reject NaN literals when binding predicates (#2432) 2026-11-04 13:29:14 -05:00
exprs_literal_set_bench_test.go perf(expr): pre-size literal sets (#1812) 2026-08-14 12:01:23 -04:00
exprs_test.go fix!: reject NaN literals when binding predicates (#2432) 2026-11-04 13:29:14 -05:00
go.mod feat(table): add Theta sketch NDV helper (#2347) 2026-11-05 12:11:34 -05:00
go.sum feat(table): add Theta sketch NDV helper (#2347) 2026-11-05 12:11:34 -05:00
labels.go feat(rest): add catalog labels to the load table/view read path (#2013) 2026-09-21 15:06:46 -04:00
labels_test.go feat(rest): add catalog labels to the load table/view read path (#2013) 2026-09-21 15:06:46 -04:00
LICENSE ci: Quick update for release_rc.sh and the LICENSE (#201) 2024-11-13 07:44:45 +01:00
literal_set_internal_test.go test: pin variant literal set edge cases (#2139) 2026-10-07 13:54:50 +02:00
literals.go fix: keep NaN rows when RewriteNotExpr pushes a NOT down (#2355) 2026-11-04 12:10:19 -05:00
literals_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
Makefile test(catalog/rest): run conformance suite against external REST catalogs, with Polaris in CI (#2190) 2026-10-21 22:28:56 +01:00
manifest.go refactor!: thread context through manifest and deletion-vector reads (#2357) 2026-11-05 12:30:12 -05:00
manifest_day_partition_test.go fix(manifest): expose day-transform partition values as Date (#1218) 2026-06-18 00:55:12 +02:00
manifest_file_ref.go perf(table): borrow manifest partition summaries (#1908) 2026-08-30 20:46:11 +02:00
manifest_list_version_test.go refactor(manifest)!: use explicit sequence number API names (#2315) 2026-10-26 18:55:12 +00:00
manifest_partition_bench_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
manifest_projection.go refactor!: thread context through manifest and deletion-vector reads (#2357) 2026-11-05 12:30:12 -05:00
manifest_projection_bench_test.go refactor!: thread context through manifest and deletion-vector reads (#2357) 2026-11-05 12:30:12 -05:00
manifest_projection_test.go refactor!: thread context through manifest and deletion-vector reads (#2357) 2026-11-05 12:30:12 -05:00
manifest_test.go refactor!: thread context through manifest and deletion-vector reads (#2357) 2026-11-05 12:30:12 -05:00
manifest_time_partition_test.go fix(manifest): handle foreign time/timestamp partition logical types (#1861) 2026-08-26 13:52:09 -04:00
manifest_writer_bench_test.go perf(manifest): update partition summaries incrementally (#1770) 2026-08-17 15:20:20 -04:00
metadata_columns.go refactor(metadata)!: name the row-lineage column predicate explicitly (#2338) 2026-10-28 13:11:31 -04:00
metadata_columns_test.go refactor(metadata)!: name the row-lineage column predicate explicitly (#2338) 2026-10-28 13:11:31 -04:00
name_mapping.go refactor(name-mapping)!: make child lookup explicit and stable (#2337) 2026-10-28 13:09:08 -04:00
name_mapping_bench_test.go perf(name_mapping): reduce allocations for wide mapping updates (#2267) 2026-10-23 17:22:29 +01:00
name_mapping_one_pass_test.go perf(name_mapping): reduce allocations for wide mapping updates (#2267) 2026-10-23 17:22:29 +01:00
name_mapping_test.go refactor(name-mapping)!: make child lookup explicit and stable (#2337) 2026-10-28 13:09:08 -04:00
nested_type_json_internal_test.go refactor: encode nested types without aliasing their exported fields (#2361) 2026-11-04 12:11:50 -05:00
NOTICE chore: Update copyright year in NOTICE file (#771) 2026-03-05 13:08:20 -08:00
operation_string.go feat(expr): bbox predicate evaluation for geo pruning (#1597) 2026-07-29 23:32:22 +02:00
partitions.go docs: mark sentinel-gated Ref accessors as module-internal (#2348) 2026-10-29 17:12:38 +01:00
partitions_bench_test.go chore: use modernize to improve code (#1836) 2026-08-17 12:50:48 -04:00
partitions_internal_test.go perf(metadata): avoid re-cloning defensive schema copies (#1990) 2026-09-18 14:39:27 +02:00
partitions_json_bench_test.go perf(table): decode partition and sort fields once (#1823) 2026-08-25 14:19:02 -04:00
partitions_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
partitions_type_bench_test.go perf(partitions): avoid temporary fields in PartitionType (#2121) 2026-10-06 18:33:12 +02:00
predicates.go ci(golangci-lint) :Add golangci linter (#315) 2025-03-04 18:04:05 -05:00
README.md feat(table,rest): enforce the catalog's scan-planning-mode directive (#2162) 2026-10-21 13:26:55 -04:00
schema.go fix!: store binary and fixed defaults as hex strings in schemas (#2372) 2026-11-05 12:11:59 -05:00
schema_column_path_bench_test.go perf(schema): avoid repeated column path copies (#2130) 2026-10-06 13:46:26 -04:00
schema_column_path_test.go perf(schema): avoid repeated column path copies (#2130) 2026-10-06 13:46:26 -04:00
schema_compatibility.go Schema compatibility functions (#2073) 2026-10-01 09:59:38 +02:00
schema_compatibility_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
schema_conversions.go fix(manifest): support nanosecond timestamp partitions (#2034) 2026-09-22 23:45:07 +02:00
schema_conversions_test.go fix(manifest): support nanosecond timestamp partitions (#2034) 2026-09-22 23:45:07 +02:00
schema_highest_field_id_bench_test.go perf(schema): avoid visitor allocations in HighestFieldID (#2134) 2026-10-12 20:24:27 +02:00
schema_name_index_bench_test.go perf(schema): reuse prefixes when indexing nested field names (#2270) 2026-10-23 17:32:56 +01:00
schema_name_index_internal_test.go perf(schema): reuse prefixes when indexing nested field names (#2270) 2026-10-23 17:32:56 +01:00
schema_test.go fix!: store binary and fixed defaults as hex strings in schemas (#2372) 2026-11-05 12:11:59 -05:00
SECURITY-THREAT-MODEL.md docs: expand security threat model (#1886) 2026-09-26 13:01:02 -04:00
transforms.go refactor(transforms)!: rename typed human formatting to ToHumanString (#2321) 2026-10-26 16:48:26 +00:00
transforms_calendar_fastpath_test.go perf(transforms): speed up year and month partition transforms (#2263) 2026-10-22 18:58:24 +01:00
transforms_decimal_bench_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
transforms_decimal_test.go perf(transform): hash decimal buckets without allocating (#1817) 2026-08-17 17:09:12 -04:00
transforms_integer_bench_test.go perf(transforms): avoid redundant integer truncate modulus (#2145) 2026-10-09 18:19:56 +02:00
transforms_parse_bench_test.go perf(transforms): avoid regexp matching in ParseTransform (#1931) 2026-08-30 20:48:40 +02:00
transforms_string_truncate_fastpath_test.go perf(transforms): skip UTF-8 scan for unchanged strings (#2222) 2026-10-19 22:54:21 +01:00
transforms_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
types.go fix!: store binary and fixed defaults as hex strings in schemas (#2372) 2026-11-05 12:11:59 -05:00
types_test.go refactor: encode nested types without aliasing their exported fields (#2361) 2026-11-04 12:11:50 -05:00
utils.go test: pin variant literal set edge cases (#2139) 2026-10-07 13:54:50 +02:00
utils_test.go feat(metrics): include environment context in commit reports (#1680) 2026-08-13 12:56:14 +02:00
variant_cast.go feat(literals): convert primitive variants in VariantLiteral.To (#2088) 2026-10-02 11:41:14 -04:00
variant_cast_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
variant_extract.go feat(table): adopt arrow-go 18.8, fast-path shredded variant extract, restore parquet dict fallback (#2002) 2026-09-22 17:40:04 +02:00
variant_extract_test.go refactor(types)!: return errors from fixed and decimal constructors (#2331) 2026-10-26 20:04:42 +00:00
variant_path.go perf(variant): scan ASCII bytes before normalizing path members (#2275) 2026-10-23 17:50:04 +01:00
variant_path_bench_test.go perf(variant): avoid copying unescaped path members (#2242) 2026-10-21 21:43:27 +01:00
variant_path_normalize_bench_test.go perf(variant): scan ASCII bytes before normalizing path members (#2275) 2026-10-23 17:50:04 +01:00
variant_path_test.go perf(variant): scan ASCII bytes before normalizing path members (#2275) 2026-10-23 17:50:04 +01:00
visitors.go fix: make ExpressionEvaluator ordering comparisons false for NaN (#2418) 2026-11-04 12:18:38 -05:00
visitors_bench_test.go perf(expr): short-circuit boolean evaluator traversal (#1800) 2026-08-14 12:00:09 -04:00
visitors_test.go fix: keep NaN rows when RewriteNotExpr pushes a NOT down (#2355) 2026-11-04 12:10:19 -05:00

Iceberg Golang

Go Reference

iceberg is a Golang implementation of the Iceberg table spec.

Build From Source

Prerequisites

  • Go 1.26 or later

Build

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

Running Tests

Use the Makefile so commands stay in sync with CI (e.g. golangci-lint version).

Unit tests

make test

Linting

make lint

Install the linter first

make lint-install
# or: go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.14.0

Integration tests

Prerequisites: Docker, Docker Compose

  1. Start the Docker containers using docker compose:

    make integration-setup
    
  2. Export the required environment variables:

    export AWS_S3_ENDPOINT=http://$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' object-store):9000
    export AWS_REGION=us-east-1
    export SPARK_CONTAINER_ID=$(docker ps -qf 'name=spark-iceberg')
    export DOCKER_API_VERSION=$(docker version -f '{{.Server.APIVersion}}')
    
  3. Run the integration tests:

    make integration-test
    

    Or run a single suite: make integration-scanner, make integration-io, make integration-rest, make integration-rest-scan-planning, make integration-spark, make integration-hive, make integration-hadoop.

Running against Spark 4.0

To validate against Spark 4.0 (used by v3 feature tests), substitute the setup step:

make integration-setup-spark4

The exported env vars and make integration-test invocation are identical to the Spark 3.5 flow above.

Tests requiring Spark 4 (currently the variant and unknown-type tests) automatically skip on the Spark 3.5 setup.

Feature Support / Roadmap

FileSystem Support

Filesystem Type Supported
S3 X
Google Cloud Storage X
Azure Blob Storage X
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 Local + Remote
Plan Scan for Snapshot Local + Remote

REST Scan Planning

REST catalogs can plan scans on the server, including asynchronous plans, batched task retrieval, and plan-scoped storage credentials. Enable this per scan with table.WithScanPlanningMode; existing scans continue to plan locally.

Scan option Behavior
table.ScanPlanningLocal (default) Read manifests locally; no planning endpoints required.
table.ScanPlanningRemote Require the advertised plan endpoint. Async or fanout responses also require their continuation endpoints; missing capabilities return an error.
table.ScanPlanningAuto Use remote planning when submission, polling, and task retrieval endpoints are advertised; otherwise plan locally. Errors after choosing remote are returned, without falling back to local.

Capabilities come from GET /v1/config. rest.Catalog.SupportsPlanTableScan() checks submission support, while SupportsFullRemoteScanPlanning() checks submission, polling, and task retrieval. Cancellation is best-effort and is not required for automatic remote planning. In auto mode, catalogs without a planner retain local planning.

Scans follow the catalog's scan-planning-mode directive (client/server). The directive is resolved with the same precedence as the Java client: the table-load response's config block wins, and the catalog's own scan-planning-mode property (including /v1/config defaults and overrides) applies when the server sends none. A mismatch between the two is logged. Read it with tbl.ScanPlanningDirective().

Directive Scan option Result
server none, auto, or remote Plan remotely.
server local Error.
client none, auto, or local Plan locally.
client remote Error.
none any As described above.

Some behaviors are specific to this client. The directive is checked when a scan is planned, not when the table is loaded, so a server table whose catalog does not advertise the plan endpoint can still be loaded and committed to; planning it returns an error. An unrecognized directive value likewise fails only at planning. An explicit scan option that conflicts with the directive is rejected rather than overridden. And incremental append and changelog scans, which only plan locally, return an error on a server table, where the Java client plans them locally.

Scans inside a transaction plan staged metadata locally and do not apply the directive. Commit responses carry no table config, so a table returned by UpdateTable keeps only the catalog's own scan-planning-mode property; reload it to obtain a per-table directive.

// tbl is a table loaded from a rest.Catalog.
ctx, cancel := context.WithTimeout(ctx, 2*time.Minute)
defer cancel()

scan := tbl.Scan(
    table.WithScanPlanningMode(table.ScanPlanningRemote),
    table.WithRowFilter(iceberg.EqualTo(iceberg.Reference("tenant_id"), "acme")),
    table.WithSelectedFields("id", "tenant_id"),
)
defer scan.Close()

tasks, err := scan.PlanFiles(ctx)
if err != nil {
    return err
}
// Read using this scan so its plan-scoped credentials remain attached.
_, records, err := scan.ReadTasks(ctx, tasks)
if err != nil {
    return err
}
for record, err := range records {
    if err != nil {
        return err
    }
    // Consume the Arrow record batch here.
    record.Release()
}

WithSnapshotID, WithSnapshotAsOf, and tag scans use the historical schema; branch scans use the current table schema. File ranges follow read.split.target-size for both local and remote planning. Remote incremental scans and _last_updated_sequence_number projection are not supported. For row-lineage scans requiring that column, auto chooses local planning and remote returns an error.

Plan and task POSTs retry HTTP 408, 429, 500, 502, 503, and 504 up to three times with jittered backoff, reusing the same UUIDv7 idempotency key. Other HTTP errors, transport failures, and malformed successful responses are returned directly. Retry-After is honored up to the caller's deadline (or capped at five seconds without a deadline). A new explicit call generates a new key unless one is supplied by the caller. WaitForPlanOptions controls polling delays and retry limits; use a context deadline to bound the complete operation. Cancellation during polling and exhausted polling trigger best-effort server cleanup. Recognized expired plans return rest.ErrPlanExpired; expired task handles return rest.ErrNoSuchPlanTask. Callers decide whether to submit a new plan.

Close the scan after consuming its tasks, including when tasks are never read. Plan-scoped credentials remain alive for active readers; closing or replacing the plan releases them when those readers finish. They cannot be renewed from the table-credentials endpoint. Once ReadTasks returns an iterator, iterate it (even if stopping early) to release its reader lease.

OpenTelemetry uses the application's global tracer and meter providers, with scope github.com/apache/iceberg-go/scan-planning; no SDK is installed by the library. Logical endpoint calls emit iceberg.scan.planning.<operation> spans and the following instruments:

Instrument Meaning
iceberg.scan.planning.requests Logical endpoint calls, labeled by operation and success/error outcome.
iceberg.scan.planning.request.duration Endpoint call duration including retries, in milliseconds.
iceberg.scan.planning.retries Additional attempts after transient HTTP failures.
iceberg.scan.planning.expirations Recognized expired plan or task responses.
iceberg.scan.planning.fallbacks Auto mode choosing local due to capability or row-lineage constraints.

Operations are plan, fetch-result, fetch-tasks, and cancel. Attributes contain only operation, outcome, or fallback reason; they omit table names, filters, tokens, credentials, and raw error messages. These client metrics complement the existing scan/commit metrics reporter.

The in-process local/remote parity test runs with go test ./catalog/rest. For Java interoperability, run make integration-rest-scan-planning (Docker required). Remote planning is opt-in, with no migration required for existing local scans.

Catalog Support

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

Read/Write Data Support

  • Data can currently be read as an Arrow Table or as a stream of Arrow record batches.

Supported Write Operations

As long as the FileSystem is supported and the Catalog supports altering the table, the following tracks the current write support:

Operation Supported
Append Stream X
Append Data Files X
Rewrite Files X
Rewrite manifests X
Overwrite Files X
Copy-On-Write Delete X
Write Pos Delete X
Write Eq Delete X
Row Delta X

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@latest 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 apache/iceberg-rest-fixture:latest
docker run -p 8181:8181 apache/iceberg-rest-fixture: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