GitHub user nongli opened a pull request: https://github.com/apache/spark/pull/10593
[SPARK-12644][SQL] Update parquet reader to be vectorized. This inlines a few of the Parquet decoders and adds vectorized APIs to support decoding in batch. There are a few particulars in the Parquet encodings that make this much more efficient. In particular, RLE encodings are very well suited for batch decoding. The Parquet 2.0 encodings are also very suited for this. This is a work in progress and does not affect the current execution. In subsequent patches, we will support more encodings and types before enabling this. Simple benchmarks indicate this can decode single ints about > 3x faster. You can merge this pull request into a Git repository by running: $ git pull https://github.com/nongli/spark spark-12644 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/spark/pull/10593.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #10593 ---- commit 7eeff58298ceac076779a5cae05ca674ed0ac51a Author: Nong <non...@gmail.com> Date: 2015-12-31T22:45:30Z [SPARK-12636][SQL] Update UnsafeRowParquetRecordReader to support reading paths directly. As noted in the code, this change is to make this componenet easier to test in isolation. commit 22afd1f0115b86cdb5ba661dd2c0714ff6a4243b Author: Nong <non...@gmail.com> Date: 2016-01-01T00:26:34Z [SPARK-12640][SQL] Add simple benchmarking utility class and add Parquet scan benchmarks. We've run benchmarks ad hoc to measure the scanner performance. We will continue to invest in this and it makes sense to get these benchmarks into code. This adds a simple benchmarking utility to do this. commit 3e41ed43ebc16f4ea0f2a642dbf3a5e40a8bd0d9 Author: Nong <non...@gmail.com> Date: 2016-01-01T05:12:44Z [SPARK-12635][SQL] Add ColumnarBatch, an in memory columnar format for execution. There are many potential benefits of having an efficient in memory columnar format as an alternate to UnsafeRow. This patch introduces ColumnarBatch/ColumnarVector which starts this effort. The remaining implementation can be done as follow up patches. As stated in the in the JIRA, there are useful external components that operate on memory in a simple columnar format. ColumnarBatch would serve that purpose and could server as a zero-serialization/zero-copy exchange for this use case. This patch supports running the underlying data either on heap or off heap. On heap runs a bit faster but we would need offheap for zero-copy exchanges. Currently, this mode is hidden behind one interface (ColumnVector). This differs from Parquet or the existing columnar cache because this is *not* intended to be used as a storage format. The focus is entirely on CPU efficiency as we expect to only have 1 of these batches in memory per task. commit d99659d89a7709df8223ab86b1edd244b1e63086 Author: Nong <non...@gmail.com> Date: 2016-01-01T07:28:06Z [SPARK-12644][SQL] Update parquet reader to be vectorized. This inlines a few of the Parquet decoders and adds vectorized APIs to support decoding in batch. There are a few particulars in the Parquet encodings that make this much more efficient. In particular, RLE encodings are very well suited for batch decoding. The Parquet 2.0 encodings are also very suited for this. This is a work in progress and does not affect the current execution. In subsequent patches, we will support more encodings and types before enabling this. Simple benchmarks indicate this can decode single ints about > 3x faster. ---- --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org