apache / apache/iceberg

Flink: Support Iceberg Views

Open
#17,858 1 comment 0 reactions 0 assignees View on GitHub
improvement
Dominant language
Java
Stars
9.2k
Forks
3.5k
Avg merge
2d 16h
Merged PRs (30d)
129

Description

### Feature Request / Improvement

Iceberg has a full view spec and `ViewCatalog` API (implemented by REST, Hive, JDBC,
Nessie, and InMemory catalogs), and Spark + Trino already read and write Iceberg views —
but the Flink connector has no view support today.

I plan to implement this as a series of small PRs against flink v2.1:

1. **Read path** — `getTable` returning `CatalogView` (SELECT / DESCRIBE), `SHOW VIEWS`,
views included in `listTables` per Flink's contract, view-aware `tableExists`.
Views store the original (as-typed) SQL under the `flink` dialect with
`default-namespace` set, matching the view spec; reads use
`View#sqlFor("flink")`.
2. **Write path** — `CREATE VIEW` / `DROP VIEW` / `ALTER VIEW ... RENAME` routed to the
underlying `ViewCatalog`.
3. **ALTER VIEW AS + refinements** — view version replace, property updates, and docs.

### Query engine

Flink

### Willingness to contribute

- [x] I can contribute this improvement/feature independently
- [ ] I would be willing to contribute this improvement/feature with guidance from the Iceberg community
- [ ] I cannot contribute this improvement/feature at this time

Contributor guide

Open the contributing guide

Research direction

Start by tracing the Flink connector entry points named in the issue: getTable, listTables, tableExists, and the CREATE/DROP/ALTER VIEW operations. Compare their current table behavior with the ViewCatalog API and Flink's CatalogView contract. Done means the read, write, and refinement paths support the listed view operations, including flink-dialect SQL and default-namespace metadata.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, sql
Domain
databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.