opened
TeRS-K
username_0
## What is the purpose of the pull request

This pull request supports ORC storage in hudi.

## Brief change log

In two separate commits:
- Implemented HoodieOrcWriter
  - Added HoodieOrcConfigs
  - Added AvroOrcUtils that writes Avro record **to** VectorizedRowBatch
  - Used orc-core:no-hive module (`no-hive` is needed because spark-sql uses no-hive version of orc and it would become easier for spark integration)
- Implemented HoodieOrcReader
  - Read Avro records **from** VectorizedRowBatch
  - Implemented OrcReaderIterator
  - Implemented ORC utility functions 

## Verify this pull request

- Added unit tests for 
  - reader/writer creation
  - AvroOrcUtils
- (local) Wrote a small tool that reads from ORC/Parquet files and writes to ORC/Parquet files, verified that the records in the input/output files are identical using spark.read.orc/spark.read.parquet.
- (local) Changed the HoodieTableConfig.DEFAULT_BASE_FILE_FORMAT  to force the tests to run with ORC as the base format. Some changes need to be made, but I'm leaving it out of this PR to get some initial feedback on the reader/writer implementation first.
  For all tests to pass with ORC as the base file format:
  - Understand schema evolution in ORC (ref TestUpdateSchemaEvolution)
  - Add ORC support for places that have hardcoded ParquetReader or sqlContext.read().parquet() 
  - Add ORC support for bootstrap op
  - Hive engine integration with ORC (implement HoodieOrcInputFormat, and more)
  - Spark engine integration with ORC (implement HoodieInternalRowOrcWriter, and more)
  - Add ORC support for HoodieSnapshotExporter
  - Implement HDFSOrcImporter
  - and possibly more.


## Committer checklist

 - [ ] Has a corresponding JIRA in PR title & commit
 
 - [ ] Commit message is descriptive of the change
 
 - [ ] CI is green

 - [ ] Necessary doc changes done or have another open PR
       
 - [ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.
[HUDI-57] Support ORC Storage
issue
created
n3nash
username_1
@prashantwason Can you review this ?
comment
created
TeRS-K
username_0
The build is currently failing with error `ERROR: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit`, it doesn't seem to be related to my change. How can I trigger a rebuild?
comment
created
yanghua
username_2
option 1: close and reopen the PR;
option 2: push an empty commit via git command
comment
created
TeRS-K
username_0
ORC is well-integrated with hive, so hive already has OrcInputFormat, OrcOutputFormat etc. With my latest change to the HoodieInputFormatUtils class, I was able to sync hudi orc format table to hive metastore (tested with deltastreamer).
However, we do still need to implement HoodieOrcInputFormat & HoodieRealtimeOrcInputFormat. I have done some work on that but it's not tested yet.
comment
created
n3nash
username_1
Closing this in favor of -> https://github.com/apache/hudi/pull/2999
comment