<html>
    <head>
  <script type="text/javascript">
    WEB_SOCKET_SWF_LOCATION = "/__rack/WebSocketMain.swf";
    
  </script>
  <script type="text/javascript" src="/__rack/swfobject.js"></script>
  <script type="text/javascript" src="/__rack/web_socket.js"></script>

<script type="text/javascript">
  RACK_LIVERELOAD_PORT = 35729;
</script>
<script type="text/javascript" src="/__rack/livereload.js?host=0.0.0.0&amp;port=35729"></script>


        <meta charset="utf-8">
        <title>Apache Parquet</title>
		    <meta name="viewport" content="width=device-width, initial-scale=1.0">
		    <meta name="description" content="">
		    <meta name="author" content="">

		    <link href="../assets/css/bootstrap.css" rel="stylesheet">
		    <link href="../assets/css/bootstrap-theme.css" rel="stylesheet">
                    <link href="../assets/css/font-awesome.css" rel="stylesheet">
				
		    <!-- JS -->
		    <script type="text/javascript" src="../assets/js/jquery-2.1.1.min.js"></script>
		    <script type="text/javascript" src="../assets/js/bootstrap.js"></script>
				<!-- Analytics -->
				<script type="text/javascript">
					  var _gaq = _gaq || [];
					  _gaq.push(['_setAccount', 'UA-39101739-5']);
					  _gaq.push(['_setDomainName', 'apache.org']);
					  _gaq.push(['_trackPageview']);

					  (function() {
					    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
					    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
					    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
					  })();
				</script>
	</head>
    <body>	
      <div class="navbar navbar-custom navbar-static-top" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="img-responsive pull-left" href="/">
        <img src="../assets/img/parquet_logo.png" alt="Apache Parquet logo" />     
       </a>
        </div>
        <div class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li><a href="/documentation/latest/">Documentation</a></li>
            <li><a href="/downloads">Download</a></li>
            <li><a href="/presentations">Presentations</a></li>
            <li><a href="/adopters">Adopters</a></li>
            <li class="dropdown">
              <a href="/community">Get Involved <span class="caret"></span></a>
                            <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
                                <li role="presentation"><a role="menuitem" tabindex="-1" href="http://issues.apache.org/jira/browse/parquet"><i class="fa fa-bug"></i> JIRA (Bugs)</a></li>
                                <li role="presentation"><a role="menuitem" tabindex="-1" href="https://gitbox.apache.org/repos/asf?p=parquet-mr.git"><i class="fa fa-code"></i> Source (Apache)</a></li>
                                <li role="presentation"><a role="menuitem" tabindex="-1" href="https://github.com/apache/parquet-mr"><i class="fa fa-github-alt"></i> Source (GitHub)</a></li>
                                <li role="presentation"><a role="menuitem" tabindex="-1" href="/contribute"><i class="fa fa-code-fork"></i> Contributing</a></li>
                                <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/ApacheParquet"><i class="fa fa-twitter"></i> @ApacheParquet</a></li>
                                <li role="presentation"><a role="menuitem" tabindex="-1" href="http://stackoverflow.com/questions/tagged/parquet"><i class="fa fa-stack-overflow"></i> StackOverflow</a></li>
                           </ul>
            </li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </div>
<!--
<div class="navbar navbar-custom navbar-static-top">
  <div class="navbar-header">
    <a class="img-responsive pull-left" href="/">
    <img src="../assets/img/parquet_logo.png" alt="Apache Parquet logo" />     
   </a>
    <div class="container-fluid">
      <ul class="nav navbar-nav">
    <li><a href="/documentation/latest/">Documentation</a></li>
    <li><a href="/downloads">Download</a></li>
    <li><a href="/presentations">Presentations</a></li>
    <li><a href="/adopters">Adopters</a></li>
        <li class="dropdown">
            <a id="drop1" href="/community">Get Involved <b class="caret"></b></a>
                <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
                    <li role="presentation"><a role="menuitem" tabindex="-1" href="http://issues.apache.org/jira/browse/parquet"><i class="fa fa-bug"></i> JIRA (Bugs)</a></li>
                    <li role="presentation"><a role="menuitem" tabindex="-1" href="https://git-wip-us.apache.org/repos/asf?s=parquet"><i class="fa fa-code"></i> Source (Apache)</a></li>
                    <li role="presentation"><a role="menuitem" tabindex="-1" href="https://github.com/apache/parquet-mr"><i class="fa fa-github-alt"></i> Source (GitHub)</a></li>
                    <li role="presentation"><a role="menuitem" tabindex="-1" href="/contribute"><i class="fa fa-code-fork"></i> Contributing</a></li>
                    <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/ApacheParquet"><i class="fa fa-twitter"></i> @ApacheParquet</a></li>
                    <li role="presentation"><a role="menuitem" tabindex="-1" href="http://stackoverflow.com/questions/tagged/parquet"><i class="fa fa-stack-overflow"></i> StackOverflow</a></li>
                    <li role="presentation"><a role="menuitem" tabindex="-1" href="https://plus.google.com/events/c36apc97f7invko9p128hq9e6b8"><i class="fa fa-google"></i> Google Hangout</a></li>
               </ul>
        </li>
      </ul>
    </div>
  </div>
<hr />
</div>

<p>&ndash;&gt;</p>

<div class="container">
<!-- magical breadcrumbs -->
<ol class="breadcrumb">
  <li>
    <div class="dropdown">
      <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation <b class="caret"></b></a>
      <ul class="dropdown-menu" role="menu">
        <li><a href="http://www.apache.org">Apache Homepage</a></li>
        <li><a href="http://www.apache.org/licenses/">Apache License</a></li>
        <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>  
        <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
        <li><a href="http://www.apache.org/security/">Security</a></li>
      </ul>
    </div>
  </li>
  <li><a href="http://parquet.apache.org">Apache Parquet</a></li>
</ol>
<!-- /breadcrumb -->
</div>
	
      <div class="container">
        <h1 id="how-to-contribute">How To Contribute</h1>

<h2 id="pull-requests">Pull Requests</h2>

<p>We prefer to receive contributions in the form of GitHub pull requests. Please send pull requests against the <a href="https://github.com/apache/parquet-mr">github.com/apache/parquet-mr</a> repository. If you&rsquo;ve previously forked Parquet from its old location, you will need to add a remote or update your origin remote to <a href="https://github.com/apache/incubator-parquet-mr.git">https://github.com/apache/incubator-parquet-mr.git</a>
Here are a few tips to get your contribution in:</p>

<ol>
<li>Break your work into small, single-purpose patches if possible. It’s much harder to merge in a large change with a lot of disjoint features.</li>
<li>Create a JIRA for your patch on the <a href="https://issues.apache.org/jira/browse/PARQUET">Parquet Project JIRA</a>.</li>
<li>Submit the patch as a GitHub pull request against the master branch. For a tutorial, see the GitHub guides on forking a repo and sending a pull request. Prefix your pull request name with the JIRA name (ex: <a href="https://github.com/apache/parquet-mr/pull/5">https://github.com/apache/parquet-mr/pull/5</a>).</li>
<li>Make sure that your code passes the unit tests. You can run the tests with <code>mvn test</code> in the root directory. </li>
<li>Add new unit tests for your code. </li>
<li>All Pull Requests are tested automatically on <a href="https://github.com/apache/parquet-mr/actions">GitHub Actions</a>. <a href="https://travis-ci.org/github/apache/parquet-mr">TravisCI</a> is also used to run the tests on ARM64 CPU architecture</li>
</ol>

<p>If you’d like to report a bug but don’t have time to fix it, you can still post it to our <a href="https://issues.apache.org/jira/browse/PARQUET">issue tracker</a>, or email the mailing list (<a href="mailto:dev@parquet.apache.org">dev@parquet.apache.org</a>).</p>

<h2 id="committers">Committers</h2>

<p>Merging a pull request requires being a comitter on the project.</p>

<p>How to merge a Pull request (have an apache and github-apache remote setup):</p>
<div class="highlight"><pre class="highlight plaintext"><code>git remote add github-apache git@github.com:apache/parquet-mr.git
git remote add apache https://gitbox.apache.org/repos/asf?p=parquet-mr.git
</code></pre></div>
<p>run the following command</p>
<div class="highlight"><pre class="highlight plaintext"><code>dev/merge_parquet_pr.py
</code></pre></div>
<p>example output:</p>
<div class="highlight"><pre class="highlight plaintext"><code>Which pull request would you like to merge? (e.g. 34):
</code></pre></div>
<p>Type the pull request number (from <a href="https://github.com/apache/parquet-mr/pulls">https://github.com/apache/parquet-mr/pulls</a>) and hit enter.</p>
<div class="highlight"><pre class="highlight plaintext"><code>=== Pull Request #X ===
title   Blah Blah Blah
source  repo/branch
target  master
url https://api.github.com/repos/apache/parquet-mr/pulls/X

Proceed with merging pull request #3? (y/n): 
</code></pre></div>
<p>If this looks good, type <code>y</code> and hit enter.</p>
<div class="highlight"><pre class="highlight plaintext"><code>From gitbox.apache.org:/repos/asf/parquet-mr.git
* [new branch]      master     -&gt; PR_TOOL_MERGE_PR_3_MASTER
Switched to branch 'PR_TOOL_MERGE_PR_3_MASTER'

Merge complete (local ref PR_TOOL_MERGE_PR_3_MASTER). Push to apache? (y/n):
</code></pre></div>
<p>A local branch with the merge has been created. Type <code>y</code> and hit enter to push it to apache master</p>
<div class="highlight"><pre class="highlight plaintext"><code>Counting objects: 67, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (26/26), done.
Writing objects: 100% (36/36), 5.32 KiB, done.
Total 36 (delta 17), reused 0 (delta 0)
To gitbox.apache.org:/repos/asf/parquet-mr.git
   b767ac4..485658a  PR_TOOL_MERGE_PR_X_MASTER -&gt; master
Restoring head pointer to b767ac4e
Note: checking out 'b767ac4e'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at b767ac4... Update README.md
Deleting local branch PR_TOOL_MERGE_PR_X
Deleting local branch PR_TOOL_MERGE_PR_X_MASTER
Pull request #X merged!
Merge hash: 485658a5

Would you like to pick 485658a5 into another branch? (y/n):
</code></pre></div>
<p>For now just say <code>n</code> as we have 1 branch</p>

<h2 id="website">Website</h2>

<p>We use middleman to generate the website content from markdown and other 
dynamic templates. The following steps assume you have a working 
ruby environment setup</p>
<div class="highlight"><pre class="highlight plaintext"><code>gem install bundler
bundle install
</code></pre></div>
<h3 id="cloning-the-website">Cloning the website</h3>

<p>Cloning the website from git:</p>
<div class="highlight"><pre class="highlight plaintext"><code>git clone https://github.com/apache/parquet-site
</code></pre></div>
<h3 id="make-changes-in-source">Make changes in source/</h3>

<p>Make any changes in the source directory:</p>
<div class="highlight"><pre class="highlight plaintext"><code>cd parquet-site/source/
vim contribute.html.md
</code></pre></div>
<h3 id="generating-the-website">Generating the website</h3>

<p>To generate the static wesbite for Apache Parquet run the following commands at the root site directory:</p>
<div class="highlight"><pre class="highlight plaintext"><code>bundle exec middleman build
git add .
git commit -m 'made changes to the site'
git push
</code></pre></div>
<p>(git push can only be done by a committer. If you are not a committer then you
may create a pull reqest from your forked repository and let a committer push
your changes.)</p>

<h3 id="live-development">Live Development</h3>

<p>Live development of the site enables automatic reload when changes are saved. 
To enable run the following command and then open a browser and navigate to 
<a href="http://localhost:4567/">http://localhost:4567</a> </p>
<div class="highlight"><pre class="highlight plaintext"><code>bundle exec middleman 
</code></pre></div>
<h3 id="publishing-the-site">Publishing the Site</h3>

<p>The website uses gitpubsub. The output folder contains the websites content
and when committed to the git repository it will be automatically deployed to
the live site. </p>

	  </div>
      <div class="container">
    <hr>
    <footer class="footer">
        <div class="row-fluid">
            <div class="span12 text-left">
                            <div class="span12">
                Copyright 2018 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. Apache Parquet and the Apache feather logo are trademarks of The Apache Software Foundation.
                            </div>
            </div>

        </div>

    </footer>
</div>

	</body>
</html>

