Skip to content

Using ice cli with BigLake Iceberg Catalog #129

@subkanthi

Description

@subkanthi

BigLake Metastore natively exposes a standard Iceberg REST Catalog API (GA since May 2025).
The endpoint is: https://biglake.googleapis.com/iceberg/v1/restcatalog
https://cloud.google.com/blog/products/data-analytics/biglake-metastore-now-supports-iceberg-rest-catalog

 create-table -p flowers.iris --schema-from-parquet=file://iris.parquet                                                       
2026-03-12 17:39:33 [main] WARN o.a.i.r.RESTSessionCatalog > Iceberg REST client is missing the OAuth2 server URI configuration and defaults to https://biglake.googleapis.com/iceberg/v1/restcatalog/v1/oauth/tokens. This automatic fallback will be removed in a future Iceberg release.It is recommended to configure the OAuth2 endpoint using the 'oauth2-server-uri' property to be prepared. This warning will disappear if the OAuth2 endpoint is explicitly configured. See https://github.com/apache/iceberg/issues/10537
2026-03-12 17:39:36 [main] ERROR com.altinity.ice.cli.Main > Fatal
org.apache.iceberg.exceptions.BadRequestException: Malformed request: Request contains an invalid argument.
	at org.apache.iceberg.rest.ErrorHandlers$DefaultErrorHandler.accept(ErrorHandlers.java:208)
	at org.apache.iceberg.rest.ErrorHandlers$TableErrorHandler.accept(ErrorHandlers.java:118)
	at org.apache.iceberg.rest.ErrorHandlers$TableErrorHandler.accept(ErrorHandlers.java:102)
	at org.apache.iceberg.rest.HTTPClient.throwFailure(HTTPClient.java:225)
	at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:309)
	at org.apache.iceberg.rest.BaseHTTPClient.post(BaseHTTPClient.java:88)
	at org.apache.iceberg.rest.RESTClient.post(RESTClient.java:113)
	at org.apache.iceberg.rest.RESTTableOperations.commit(RESTTableOperations.java:159)
	at org.apache.iceberg.BaseTransaction.commitCreateTransaction(BaseTransaction.java:327)
	at org.apache.iceberg.BaseTransaction.commitTransaction(BaseTransaction.java:306)
	at com.altinity.ice.cli.internal.cmd.CreateTable.run(CreateTable.java:130)
	at com.altinity.ice.cli.Main.createTable(Main.java:293)
	at com.altinity.ice.cli.Main.lambda$main$1(Main.java:827) [9 skipped]
	at com.altinity.ice.cli.Main.main(Main.java:834) [1 skipped]

.ice.yaml

uri: https://biglake.googleapis.com/iceberg/v1beta/restcatalog

icebergProperties:
  warehouse: gs://iceberg-test-2
  prefix: "projects/kanthi-test/locations/LOCATION/catalogs/iceberg-test-2"
  token: ""
  header.x-goog-user-project: kanthi-test
  header.X-Iceberg-Access-Delegation: vended-credentials
  io-impl: org.apache.iceberg.gcp.gcs.GCSFileIO
  rest-metrics-reporting-enabled: "false"


Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions