revanthgss opened a new issue, #16995:
URL: https://github.com/apache/iceberg/issues/16995

   ### Feature Request / Improvement
   
   ## Background
   
   The AWS module supports attaching arbitrary key-value tags to S3 objects at 
write time via
   `s3.write.tags.<key>=<value>` catalog properties (see `S3FileIOProperties` 
and `S3OutputStream`).
   These tags are embedded in the upload request with no extra API call and can 
drive S3 lifecycle
   policies.
   
   GCS has a direct equivalent called **object contexts** — key-value metadata 
embedded
   during the object write. The GCS Java SDK supports this via
   `BlobInfo.Builder.setContexts(ObjectContexts)` since
   [commit 
`485aefd`](https://github.com/googleapis/java-storage/commit/485aefd3047c52c98d8bd913033c8aee1473e988)
   (google-cloud-storage ≥ 2.57).
   
   ## Proposed change
   
   Add `gcs.write.object-context.<key>=<value>` catalog property support, 
mirroring the S3 design. This would be useful to add additional metadata like 
environment, team and table info to the catalog files that are created in GCS.
   
   - **`GCPProperties`** — new constant `GCS_WRITE_OBJECT_CONTEXT_PREFIX = 
"gcs.write.object-context."`;
     constructor collects all matching properties into an immutable 
`Map<String, String> writeObjectContexts`;
     new accessor `writeObjectContexts()`
   - **`GCSOutputStream`** — new private `buildBlobInfo(BlobId, GCPProperties)` 
that calls
     `builder.setContexts(ObjectContexts)` when contexts are configured before 
passing `BlobInfo` to
     `storage.writer()`. No changes to the stream mechanics.
   - No changes to `GCSFileIO`, `GCSOutputFile`, or any module outside `gcp/`
   
   ## Example usage
   
   ```properties
   spark.sql.catalog.my_catalog.gcs.write.object-context.env=prod
   spark.sql.catalog.my_catalog.gcs.write.object-context.team=data-platform
   spark.sql.catalog.my_catalog.gcs.write.object-context.iceberg-table=orders
   ```
   
   ## Related
   
   - S3 write-tags: apache/iceberg#4259
   - GCS object contexts SDK commit: 
[[googleapis/java-storage@485aefd](https://github.com/googleapis/java-storage/commit/485aefd3047c52c98d8bd913033c8aee1473e988)](https://github.com/googleapis/java-storage/commit/485aefd3047c52c98d8bd913033c8aee1473e988)
   - GCS object context docs: 
https://cloud.google.com/storage/docs/use-object-contexts
   
   ### Query engine
   
   None
   
   ### Willingness to contribute
   
   - [x] I can contribute this improvement/feature independently
   - [x] I would be willing to contribute this improvement/feature with 
guidance from the Iceberg community
   - [ ] I cannot contribute this improvement/feature at this time


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to