You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@parquet.apache.org by "Wes McKinney (JIRA)" <ji...@apache.org> on 2019/05/28 20:05:00 UTC

[jira] [Commented] (PARQUET-1422) [C++] Use Arrow IO interfaces natively rather than current parquet:: wrappers

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

Wes McKinney commented on PARQUET-1422:
---------------------------------------

[~pitrou] I ran into a snag working on this in the different semantics of {{parquet::BufferedInputStream}} versus {{arrow::io::BufferedInputStream}}. The only place this function is used in parquet-cpp is here

https://github.com/apache/arrow/blob/1a0e976/cpp/src/parquet/column_reader.cc#L156

The idea is that we don't yet know how big the next page header is so we keep trying to deserialize a larger and larger page header with Thrift until we reach the maximum allowable page size.

{{parquet::BufferedInputStream}} when passed larger and larger peek sizes will expand the size of the buffer to suit the request. 

The easiest thing would be to port the logic from parquet-cpp to in

https://github.com/apache/arrow/blob/1a0e976/cpp/src/arrow/io/buffered.cc#L258

Another issue I found is that {{arrow::io::BufferedInputStream::Peek}} cannot trigger buffering unlike the {{parquet::}} counterpart

> [C++] Use Arrow IO interfaces natively rather than current parquet:: wrappers
> -----------------------------------------------------------------------------
>
>                 Key: PARQUET-1422
>                 URL: https://issues.apache.org/jira/browse/PARQUET-1422
>             Project: Parquet
>          Issue Type: Improvement
>          Components: parquet-cpp
>            Reporter: Wes McKinney
>            Assignee: Wes McKinney
>            Priority: Major
>             Fix For: cpp-1.6.0
>
>
> We are beginning to do some work on asynchronous IO in Arrow and it would be great to be able to leverage this in the Parquet core internals. 
> I am proposing to remove the Parquet-specific virtual file interfaces in
> https://github.com/apache/arrow/blob/master/cpp/src/parquet/util/memory.h#L221
> and instead rely directly on the Arrow ones in arrow::io. In addition to reducing the amount of code we have to maintain, we will also be able to improve performance of Parquet by utilizing common utilities for managing asynchronous / background IO
> cc [~mdeepak] [~xhochy]



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)