Skip to content

TieringService support convert arrow to parquet directly #437

Open
0 of 2 issues completed
Open

Description

@leonardBang

Search before asking

  • I searched in the issues and found nothing similar.

Description

TieringService support convert arrow to parquet directly for higher performance

Willingness to contribute

  • I'm willing to submit a PR!

Activity

  1. changed the title [-][fluss-lake/fluss-lake-common] Implement Utility classes like Arrow-to-Parquet conversion implementation[/-] [+]Implement Utility classes like Arrow-to-Parquet conversion implementation[/+] on Feb 22, 2025
  2. SteNicholas commented on Mar 14, 2025

    @SteNicholas
    Member

    @leonardBang, does this ticket mean that we could introduce utilities to convert arrow to parquet format? IMO, we could reuse the conversion in Iceberg like ArrowReader, ParquetConversions.

  3. wuchong commented on Mar 14, 2025

    @wuchong
    Member

    @SteNicholas, yes, we can certainly leverage some external libraries or implementations. However, the links you provided focus on converting Parquet to Arrow, whereas our requirement is the reverse: converting Arrow to Parquet.

  4. SteNicholas commented on Mar 17, 2025

    @SteNicholas
    Member

    @wuchong, thanks for explanation for the ticket purpose. I would like to do a try to use jni wrapper way to invoke WriteRecordBatch of arrow.

  5. luoyuxia commented on Apr 30, 2025

    @luoyuxia
    Contributor

    I created a issue in arrow-java to track this. Support parquet write from Arrow record batch apache/arrow-java#735

  6. xx789633 commented on Nov 1, 2025

    @xx789633
    Contributor

    Hi @luoyuxia , to implement the scenario you described in issue apache/arrow-java#735 (reading Arrow RecordBatches continuously from a remote server and writing to Parquet) using Arrow Java's DatasetFileWriter, we can subclass ArrowReader and implement a facade over an iterator. For example, arrow jdbc driver demonstrates such approach in its RootArrowReader. Specifically, we need to override loadNextBatch in ArrowReader to manually populate VectorSchemaRoot.

    Regarding the performance comparison between Arrow Java's Parquet writing and the C++ implementation, do we have performance numbers?

  7. luoyuxia commented on Nov 3, 2025

    @luoyuxia
    Contributor

    Hi @luoyuxia , to implement the scenario you described in issue apache/arrow-java#735 (reading Arrow RecordBatches continuously from a remote server and writing to Parquet) using Arrow Java's DatasetFileWriter, we can subclass ArrowReader and implement a facade over an iterator. For example, arrow jdbc driver demonstrates such approach in its RootArrowReader. Specifically, we need to override loadNextBatch in ArrowReader to manually populate VectorSchemaRoot.

    Regarding the performance comparison between Arrow Java's Parquet writing and the C++ implementation, do we have performance numbers?

    Just as discuss offline, that's hacky and will require us to implement a new arrow filesystem for the filesystems that not supported by arrow.

  8. luoyuxia commented on Mar 30, 2026

    @luoyuxia
    Contributor

    Splitting this task into two follow-up sub-issues:

    This separates the tiering-source read path from the reusable Arrow-to-Parquet conversion utility.

  9. changed the title [-]Implement Utility classes like Arrow-to-Parquet conversion implementation[/-] [+]TieringService support convert arrow to parquet directly[/+] on Mar 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions