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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions