...
This checklist tells you how to create accounts and obtain permissions needed by Hive contributors. See the Hive website for additional information.
- Create Request an Apache Software Foundation JIRA account, if you do not already have one: Sign Up for JIRA.
- To review patches you could do that on Github
- All Hive patches posted for review are listed here.
- Individual JIRA tickets provide a link to the issue on the review board when a review request has been made.
- To contribute to the Hive wiki, follow the instructions in About This Wiki.
- To edit the Hive website, follow the instructions in How to edit the website.
- Join the Hive mailing lists to receive email about issues and discussions.
Making Changes
If you're a newcomer, feel free to contribute by working on a newbie task.
Before you start, send a message to the Hive developer mailing list, or file a bug report in JIRA. Describe your proposed changes and check that they fit in with what others are doing and have planned for the project. Be patient, it may take folks a while to understand your requirements.
...
Committers: for non-trivial changes, it is best to get another committer to review your patches before commit. Use the Submit Patch link like other contributors, and then wait for a "+1" from another committer before committing. Please also try to frequently review things in the patch queue.
JIRA
...
Hive uses JIRA for issues/case management. You must If you don't already have a JIRA account , sign Up for JIRA.in order to log cases and issues.
Requests for the creation of new accounts can be submitted via the following form: https://selfserve.apache.org/jira-account.html
Guidelines
Please comment on issues in JIRAPlease comment on issues in JIRA, making your concerns known. Please also vote for issues that are a high priority for you.
...
Please leave Fix Version/s empty when creating the issue – it should not be tagged until an issue is closed, and then, it is tagged by the committer closing it to indicate the earliest version(s) the fix went into. Instead of Fix Version/s, use Target Version/s to request which versions the new issue's patch should go into. (Target Version/s was added to the Create Issue form in November 2015. You can add target versions to issues created before that with the Edit button, which is in the upper left corner.)
When in doubt about how to fill in the Create Issue form, take a look at what was done for other issues. Here are several Hive JIRA issues that you can use as examples:
- bug: HIVE-8485, HIVE-8600, HIVE-9438, HIVE-11174
- new feature: HIVE-6806, HIVE-7088, HIVE-11103
- improvement: HIVE-7685, HIVE-9858, HIVE-10165
- test: HIVE-8601, HIVE-10637
- wish: HIVE-4563, HIVE-10427
- task: HIVE-7111, HIVE-7789
Many examples of uncommitted issues are available in the "Added recently" list on the issues panel.
Generating Thrift Code
Some portions of the Hive code are generated by Thrift. For most Hive changes, you don't need to worry about this, but if you modify any of the Thrift IDL files (e.g. metastore/if/hive_metastore.thrift
and service/if/hive_service.thrift
), then you'll also need to regenerate these files and submit their updated versions as part of your patch.
Here are the steps relevant to hive_metastore.thrift
:
Consider using bi-directional links when referring to other tickets. It is very common and convenient to refer to other tickets by adding the HIVE-XXXXX pattern in summary, description, and comments. The pattern allows someone to navigate quickly to an older JIRA from the current one but not the other way around. Ideally, along with the mention (HIVE-XXXXX) pattern, it helps to add an explicit link (relates to, causes, depends upon, etc.) so that the relationship between tickets is visible from both ends.
Add the "backward-incompatible" label to tickets changing the behavior of some component or introduce modifications to public APIs. There are various other labels available for similar purposes but this is the most widely used across projects so it is better to stick to it to keep things uniform.
When in doubt about how to fill in the Create Issue form, take a look at what was done for other issues. Here are several Hive JIRA issues that you can use as examples:
- bug: HIVE-8485, HIVE-8600, HIVE-9438, HIVE-11174
- new feature: HIVE-6806, HIVE-7088, HIVE-11103
- improvement: HIVE-7685, HIVE-9858, HIVE-10165
- test: HIVE-8601, HIVE-10637
- wish: HIVE-4563, HIVE-10427
- task: HIVE-7111, HIVE-7789
Many examples of uncommitted issues are available in the "Added recently" list on the issues panel.
Generating Thrift Code
Some portions of the Hive code are generated by Thrift. For most Hive changes, you don't need to worry about this, but if you modify any of the Thrift IDL files (e.g., standalone-metastore/metastore-common/src/main/thrift/hive_metastore.thrift and service-rpc/if/TCLIService.thrift), then you'll also need to regenerate these files and submit their updated versions as part of your patch.
Here are the steps relevant to hive_metastore.thrift
:
- Don't make any changes to
hive_metastore.thrift
until instructed below. - Use the approved version of Thrift. This is currently
thrift-0.14.1
, which you can obtain from http://thrift.apache.org/.For Mac via Homebrew (since the version we need is not available by default):
Code Block language bash brew tap-new $USER/local-tap brew extract --version='0.14.1' thrift $USER/local-tap brew install thrift@0.14.1 mkdir -p /usr/local/share/fb303/if cp /usr/local/Cellar/thrift@0.14.1/0.14.1/share/fb303/if/fb303.thrift /usr/local/share/fb303/if
For Mac, building from sources:
Code Block language bash wget http://archive.apache.org/dist/thrift/0.14.1/thrift-0.14.1.tar.gz tar xzf thrift-0.14.1.tar.gz #If configure fails with "syntax error near unexpected token `QT5", then run "brew install pkg-config" ./bootstrap.sh sudo ./configure --with-openssl=/usr/local/Cellar/openssl@1.1/1.1.1j --without-erlang --without-nodejs --without-python --without-py3 --without-perl --without-php --without-php_extension --without-ruby --without-haskell --without-go --without-swift --without-dotnetcore --without-qt5 brew install openssl sudo ln -s /usr/local/opt/openssl/include/openssl/ /usr/local/include/ sudo make sudo make install mkdir -p /usr/local/share/fb303/if cp path/to/thrift-0.14.1/contrib/fb303/if/fb303.thrift /usr/local/share/fb303/if/fb303.thrift # or alternatively the following command curl -o /usr/local/share/fb303/if/fb303.thrift https://raw.githubusercontent.com/apache/thrift/master/contrib/fb303/if/fb303.thrift
For Linux:
Code Block language bash cd /path/to/thrift-0.14.1 /configure -without-erlang --without-nodejs --without-python --without-py3 --without-perl --without-php --without-php_extension --without-ruby --without-haskell --without-go --without-swift --without-dotnetcore --without-qt5 sudo make sudo make install sudo mkdir -p /usr/local/share/fb303/if sudo cp
- Don't make any changes to
hive_metastore.thrift
until instructed below. - Use the approved version of Thrift. This is currently
thrift-0.9.3
, which you can obtain from http://thrift.apache.org/. (Or on Mac: brew install thrift@0.9, and no need to build, skip to step 4.) - Build the Thrift compiler from its sources, then install it:
cd /path/to/thrift-0.9.3
./configure --without-csharp --without-ruby
make
sudo make install
- Before proceeding, verify that
which thrift
returns the build of Thrift you just installed (typically/usr/local/bin
on Linux); if not, edit your PATH and repeat the verification. Also verify that the command 'thrift -version' returns the expected version number of Thrift. - Now you can run the Maven 'thriftif' profile to generate the Thrift code:
cd /path/to/hive-trunk/
mvn clean install -Pthriftif -DskipTests -Dthrift.home=/usr/local -Phadoop-2
- If you see an error about fb303.thrift not being found, copy it to the appropriate directory and run above command again.On centOS/RHEL:
cp
9/path/to/thrift-0.
314.
On Mac with homebrew:1/contrib/fb303/if/fb303.thrift /usr/local/share/fb303/if/fb303.thrift
$ cd /usr/local/Cellar/thrift@0.9/0.9.3 && mkdir -p share/fb303/if && cd share/fb303/if && curl -o fb303.thrift https://raw.githubusercontent.com/apache/thrift/master/contrib/fb303/if/fb303.thrift
Before proceeding, verify that
which thrift
returns the build of Thrift you just installed (typically/usr/local/bin
on Linux); if not, edit your PATH and repeat the verification. Also verify that the command 'thrift -version' returns the expected version number of Thrift.- Now you can run the Maven 'thriftif' profile to generate the Thrift code:
cd /path/to/hive/
mvn clean install -Pthriftif -DskipTests -Dthrift.home=/usr/local
- Verify that the code generation was a no-op, which should be the case if you have the correct Thrift version and everyone has been following these instructions. You may use
git status
orsvn status
for for the same. If you can't figure out what is going wrong, ask for help from a committer. - Now make your changes to
hive_metastore.thrift
, and then run the compiler again, from /path/to/hive-trunk/<hive_metastore.thrift's module>:mvn clean install -Pthriftif -DskipTests -Dthrift.home=/usr/local -Phadoop-2
- Now use
svn status
andsvn diff
orgit status and git diff
to verify that the regenerated code corresponds only to the changes you made tohive_metastore.thrift
. You may also needsvn add
or needgit add
if new files were generated (andsvn remove
orgit rm
if some files have been are now obsoleted). cd /path/to/hive-trunk
ant mvn clean package -DskiptTests (at the time of writing also "-Dmaven.javadoc.skip" is needed)
- Verify that Hive is still working correctly with both embedded and remote metastore configurations.
...
Contributors should join the Hive mailing lists. In particular the dev list (to join discussions of changes) and the user list (to help others).
...