You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Alessandro Molina (Jira)" <ji...@apache.org> on 2022/03/24 09:32:00 UTC

[jira] [Comment Edited] (ARROW-15969) [C++][Python] Add conversion from RecordBatchFileReader to RecordBatchReader

    [ https://issues.apache.org/jira/browse/ARROW-15969?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17511724#comment-17511724 ] 

Alessandro Molina edited comment on ARROW-15969 at 3/24/22, 9:31 AM:
---------------------------------------------------------------------

{quote}Imho due to this difference, implementing RBR on the file reader would lead to 'awkwardness' down the road - what if user wants to consume contents of the file using RBR multiple times? 
{quote}
I wasn't suggesting that {{RecordBatchReader}} should be implemented on top of {{{}RecordBatchFileReader{}}}, I was mostly wondering if it wasn't the case for the opposite. A random access reader should be able to reproduce all the features of a stream reader, plus some additional capabilities like seeking. 

The reason I was wondering is that if we exposed a class hierarchy like
{code:java}
             RecordBatchReader
                 /.        \
                /           \
RecordBatchStreamReader    RecordBatchFileReader{code}
We wouldn't have to deal with "converting" file readers, they could be used directly wherever a \{{RecordBatchReader}} was needed

In the end, I don't see a reason why {{RecordBatchFileReader}} can't have a {{get_next_batch}} method, when reading a file you have a current position for the current ongoing read.


was (Author: amol-):
{quote}Imho due to this difference, implementing RBR on the file reader would lead to 'awkwardness' down the road - what if user wants to consume contents of the file using RBR multiple times? 
{quote}
I wasn't suggesting that {{RecordBatchReader}} should be implemented on top of {{{}RecordBatchFileReader{}}}, I was mostly wondering if it wasn't the case for the opposite. A random access reader should be able to reproduce all the features of a stream reader, plus some additional capabilities like seeking. 

The reason I was wondering is that if we exposed a class hierarchy like
{code:java}
             RecordBatchReader
                 /.        \
                /           \
RecordBatchStreamReader    RecordBatchFileReader{code}
We wouldn't have to deal with "converting" file readers, they could be used directly wherever a {{RecordBatchReader }}was needed

In the end, I don't see a reason why {{RecordBatchFileReader}} can't have a {{get_next_batch}} method, when reading a file you have a current position for the current ongoing read.

> [C++][Python] Add conversion from RecordBatchFileReader to RecordBatchReader
> ----------------------------------------------------------------------------
>
>                 Key: ARROW-15969
>                 URL: https://issues.apache.org/jira/browse/ARROW-15969
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: C++, Python
>            Reporter: Lubo Slivka
>            Priority: Major
>
> The suggested improvement is to introduce a conversion/adapter so that all batches from RecordBatchFileReader can be read one-by-one using RecordBatchReader.
> Perhaps a new instance method RecordBatchFileReader.to_reader()? This would follow the suit of for instance the pyarrow.flight.MetadataRecordBatchReader which also has to_reader().
> *Motivation*
> Record Batches serialized into IPC file format can be read using RecordBatchFileReader. The interface of this reader is incompatible with RecordBatchReader.
> This impacts for instance the Flight RPC DoGet, where it is not possible to efficiently (e.g. fully in C++) send out all data by using pyarrow.flight.RecordBatchStream. However, there may be other use cases where client code wants to read data batch-by-batch transparently, without caring about the serialization format.
> Further background is here: [https://lists.apache.org/thread/b9jwk103fgxfo4kct12t00ymdft7bklb]
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)