Skip to content

Parquet

Status: experimental. Unlike Kafka, which is production-grade and documented in depth, the Parquet native paths have not seen the same hardening — expect rough edges and treat fallback to stock Flink as the normal, safe outcome.

Source

The native source reads only local file: paths. Any other scheme (hdfs:, s3:, …) or any non-Parquet source format falls back to Flink's own reader. An ORC source existed and was removed — its scan engine lagged DataFusion releases and required carrying a fork pin through every DataFusion bump. Restoring it is tracked as issue #19; it is not planned work described here.

Sink

The sink accepts any filesystem Flink has a plugin for (file:/s3:/gs:/abfs:/hdfs:/…). The native side only encodes Parquet bytes; Flink's own recoverable output streams do the I/O, so filesystem plugins, credentials, exactly-once commit, and partition commit all remain Flink's own code.

Falls back to Flink on:

  • Timestamp columns without 'parquet.write.int64.timestamp' = 'true' or 'parquet.utc-timezone' = 'true' set.
  • Nested written columns (ARRAY/MAP/MULTISET/ROW/RAW) — scalar columns are fully covered.
  • 'auto-compaction' = 'true'.
  • Unsupported compression codecs, or multithreaded zstd.
  • INSERT OVERWRITE.
  • A changelog (retracting) input.

See Deployment for the JARs a Parquet source or sink needs.