You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by vi...@apache.org on 2020/01/12 09:52:21 UTC

[incubator-hudi] branch asf-site updated: [HUDI-521] Remove docs-tmp docs (#1211)

This is an automated email from the ASF dual-hosted git repository.

vinoth pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-hudi.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 64142e5  [HUDI-521] Remove docs-tmp docs (#1211)
64142e5 is described below

commit 64142e5e7935cc72aec36a2a512549de5651c71d
Author: lamber-ken <la...@163.com>
AuthorDate: Sun Jan 12 17:52:12 2020 +0800

    [HUDI-521] Remove docs-tmp docs (#1211)
---
 docs-tmp/.gitignore                                |    7 -
 docs-tmp/Dockerfile                                |   27 -
 docs-tmp/Gemfile                                   |   15 -
 docs-tmp/Gemfile.lock                              |  110 -
 docs-tmp/LICENSE                                   |   21 -
 docs-tmp/README.md                                 |   46 -
 docs-tmp/_config.yml                               |  218 --
 docs-tmp/_data/navigation.yml                      |   53 -
 docs-tmp/_data/ui-text.yml                         |   60 -
 docs-tmp/_docs/0_1_s3_filesystem.md                |   76 -
 docs-tmp/_docs/0_2_gcs_filesystem.md               |   61 -
 docs-tmp/_docs/0_3_migration_guide.md              |   72 -
 docs-tmp/_docs/0_4_docker_demo.md                  | 1152 -------
 docs-tmp/_docs/1_1_quick_start_guide.md            |  174 -
 docs-tmp/_docs/1_2_structure.md                    |   21 -
 docs-tmp/_docs/1_3_use_cases.md                    |   67 -
 docs-tmp/_docs/1_4_powered_by.md                   |   69 -
 docs-tmp/_docs/1_5_comparison.md                   |   57 -
 docs-tmp/_docs/2_1_concepts.md                     |  171 -
 docs-tmp/_docs/2_2_writing_data.md                 |  222 --
 docs-tmp/_docs/2_3_querying_data.md                |  144 -
 docs-tmp/_docs/2_4_configurations.md               |  436 ---
 docs-tmp/_docs/2_5_performance.md                  |   65 -
 docs-tmp/_docs/2_6_admin_guide.md                  |  444 ---
 docs-tmp/_docs/3_1_privacy.md                      |   23 -
 docs-tmp/_docs/3_2_docs_versions.md                |   12 -
 docs-tmp/_includes/archive-single.html             |   35 -
 docs-tmp/_includes/browser-upgrade.html            |    3 -
 docs-tmp/_includes/figure                          |    9 -
 docs-tmp/_includes/footer.html                     |   19 -
 docs-tmp/_includes/head.html                       |   44 -
 docs-tmp/_includes/masthead.html                   |   51 -
 docs-tmp/_includes/nav_list                        |   52 -
 docs-tmp/_includes/quick_link.html                 |   39 -
 docs-tmp/_includes/scripts.html                    |    2 -
 docs-tmp/_includes/seo.html                        |   97 -
 docs-tmp/_includes/sidebar.html                    |   30 -
 docs-tmp/_includes/toc                             |    7 -
 docs-tmp/_includes/toc.html                        |   85 -
 docs-tmp/_layouts/default.html                     |   27 -
 docs-tmp/_layouts/home.html                        |   98 -
 docs-tmp/_layouts/posts.html                       |   40 -
 docs-tmp/_layouts/releases.html                    |   45 -
 docs-tmp/_layouts/single.html                      |   46 -
 docs-tmp/_pages/404.md                             |    8 -
 docs-tmp/_pages/activity.md                        |    6 -
 docs-tmp/_pages/community.md                       |   81 -
 docs-tmp/_pages/contributing.md                    |  165 -
 docs-tmp/_pages/index.md                           |   21 -
 docs-tmp/_pages/releases.md                        |   45 -
 docs-tmp/_pages/roadmap.md                         |   26 -
 docs-tmp/_posts/2016-12-30-strata-talk-2017.md     |   10 -
 docs-tmp/_posts/2019-01-18-asf-incubation.md       |    9 -
 docs-tmp/_sass/hudi_style.scss                     |   35 -
 docs-tmp/_sass/hudi_style/_animations.scss         |   21 -
 docs-tmp/_sass/hudi_style/_archive.scss            |  447 ---
 docs-tmp/_sass/hudi_style/_base.scss               |  357 --
 docs-tmp/_sass/hudi_style/_buttons.scss            |   97 -
 docs-tmp/_sass/hudi_style/_footer.scss             |   86 -
 docs-tmp/_sass/hudi_style/_forms.scss              |  393 ---
 docs-tmp/_sass/hudi_style/_masthead.scss           |   93 -
 docs-tmp/_sass/hudi_style/_mixins.scss             |   92 -
 docs-tmp/_sass/hudi_style/_navigation.scss         |  572 ----
 docs-tmp/_sass/hudi_style/_notices.scss            |  100 -
 docs-tmp/_sass/hudi_style/_page.scss               |  548 ---
 docs-tmp/_sass/hudi_style/_print.scss              |  252 --
 docs-tmp/_sass/hudi_style/_reset.scss              |  187 --
 docs-tmp/_sass/hudi_style/_search.scss             |  132 -
 docs-tmp/_sass/hudi_style/_sidebar.scss            |  320 --
 docs-tmp/_sass/hudi_style/_syntax.scss             |  324 --
 docs-tmp/_sass/hudi_style/_tables.scss             |   39 -
 docs-tmp/_sass/hudi_style/_utilities.scss          |  562 ----
 docs-tmp/_sass/hudi_style/_variables.scss          |  161 -
 docs-tmp/_sass/hudi_style/skins/_hudi.scss         |  114 -
 .../hudi_style/vendor/breakpoint/_breakpoint.scss  |  114 -
 .../hudi_style/vendor/breakpoint/_context.scss     |   95 -
 .../hudi_style/vendor/breakpoint/_helpers.scss     |  151 -
 .../vendor/breakpoint/_legacy-settings.scss        |   50 -
 .../hudi_style/vendor/breakpoint/_no-query.scss    |   15 -
 .../hudi_style/vendor/breakpoint/_parsers.scss     |  215 --
 .../hudi_style/vendor/breakpoint/_respond-to.scss  |   82 -
 .../hudi_style/vendor/breakpoint/_settings.scss    |   71 -
 .../vendor/breakpoint/parsers/_double.scss         |   33 -
 .../vendor/breakpoint/parsers/_query.scss          |   82 -
 .../vendor/breakpoint/parsers/_resolution.scss     |   31 -
 .../vendor/breakpoint/parsers/_single.scss         |   26 -
 .../vendor/breakpoint/parsers/_triple.scss         |   36 -
 .../breakpoint/parsers/double/_default-pair.scss   |   21 -
 .../vendor/breakpoint/parsers/double/_default.scss |   22 -
 .../breakpoint/parsers/double/_double-string.scss  |   22 -
 .../breakpoint/parsers/resolution/_resolution.scss |   60 -
 .../vendor/breakpoint/parsers/single/_default.scss |   13 -
 .../vendor/breakpoint/parsers/triple/_default.scss |   18 -
 .../vendor/magnific-popup/_magnific-popup.scss     |  649 ----
 .../vendor/magnific-popup/_settings.scss           |   46 -
 docs-tmp/_sass/hudi_style/vendor/susy/_su.scss     |    4 -
 .../_sass/hudi_style/vendor/susy/_susy-prefix.scss |   13 -
 docs-tmp/_sass/hudi_style/vendor/susy/_susy.scss   |    5 -
 .../hudi_style/vendor/susy/plugins/_svg-grid.scss  |    5 -
 .../vendor/susy/plugins/svg-grid/_prefix.scss      |    7 -
 .../vendor/susy/plugins/svg-grid/_svg-api.scss     |  114 -
 .../susy/plugins/svg-grid/_svg-grid-math.scss      |   67 -
 .../susy/plugins/svg-grid/_svg-settings.scss       |   14 -
 .../susy/plugins/svg-grid/_svg-unprefix.scss       |   18 -
 .../susy/plugins/svg-grid/_svg-utilities.scss      |  133 -
 .../_sass/hudi_style/vendor/susy/susy/_api.scss    |  318 --
 .../hudi_style/vendor/susy/susy/_normalize.scss    |  261 --
 .../_sass/hudi_style/vendor/susy/susy/_parse.scss  |  163 -
 .../hudi_style/vendor/susy/susy/_settings.scss     |  329 --
 .../hudi_style/vendor/susy/susy/_su-math.scss      |  441 ---
 .../hudi_style/vendor/susy/susy/_su-validate.scss  |  213 --
 .../vendor/susy/susy/_syntax-helpers.scss          |  191 --
 .../hudi_style/vendor/susy/susy/_unprefix.scss     |   56 -
 .../hudi_style/vendor/susy/susy/_utilities.scss    |  167 -
 docs-tmp/assets/css/font-awesome.min.css           |    4 -
 docs-tmp/assets/css/main.scss                      |    8 -
 docs-tmp/assets/fonts/FontAwesome.otf              |  Bin 134808 -> 0 bytes
 docs-tmp/assets/fonts/fontawesome-webfont.eot      |  Bin 165742 -> 0 bytes
 docs-tmp/assets/fonts/fontawesome-webfont.svg      | 2671 ---------------
 docs-tmp/assets/fonts/fontawesome-webfont.ttf      |  Bin 165548 -> 0 bytes
 docs-tmp/assets/fonts/fontawesome-webfont.woff     |  Bin 98024 -> 0 bytes
 docs-tmp/assets/fonts/fontawesome-webfont.woff2    |  Bin 77160 -> 0 bytes
 docs-tmp/assets/images/asf_logo.svg                |  210 --
 docs-tmp/assets/images/async_compac_1.png          |  Bin 60344 -> 0 bytes
 docs-tmp/assets/images/async_compac_2.png          |  Bin 54164 -> 0 bytes
 docs-tmp/assets/images/async_compac_3.png          |  Bin 70516 -> 0 bytes
 docs-tmp/assets/images/async_compac_4.png          |  Bin 66932 -> 0 bytes
 docs-tmp/assets/images/favicon.ico                 |  Bin 1150 -> 0 bytes
 docs-tmp/assets/images/hudi-lake.png               |  Bin 44413 -> 0 bytes
 docs-tmp/assets/images/hudi.png                    |  Bin 3463 -> 0 bytes
 docs-tmp/assets/images/hudi_commit_duration.png    |  Bin 252950 -> 0 bytes
 docs-tmp/assets/images/hudi_cow.png                |  Bin 48994 -> 0 bytes
 docs-tmp/assets/images/hudi_intro_1.png            |  Bin 53386 -> 0 bytes
 docs-tmp/assets/images/hudi_intro_big.png          |  Bin 53397 -> 0 bytes
 docs-tmp/assets/images/hudi_log_format_v2.png      |  Bin 223676 -> 0 bytes
 docs-tmp/assets/images/hudi_mor.png                |  Bin 92073 -> 0 bytes
 docs-tmp/assets/images/hudi_query_perf_hive.png    |  Bin 158481 -> 0 bytes
 docs-tmp/assets/images/hudi_query_perf_presto.png  |  Bin 33727 -> 0 bytes
 docs-tmp/assets/images/hudi_query_perf_spark.png   |  Bin 29384 -> 0 bytes
 docs-tmp/assets/images/hudi_site_logo.png          |  Bin 13170 -> 0 bytes
 docs-tmp/assets/images/hudi_timeline.png           |  Bin 23093 -> 0 bytes
 docs-tmp/assets/images/hudi_upsert_dag.png         |  Bin 496203 -> 0 bytes
 docs-tmp/assets/images/hudi_upsert_perf1.png       |  Bin 15984 -> 0 bytes
 docs-tmp/assets/images/hudi_upsert_perf2.png       |  Bin 18954 -> 0 bytes
 docs-tmp/assets/images/logo-big-2.png              |  Bin 66543 -> 0 bytes
 docs-tmp/assets/images/logo-big-bak.png            |  Bin 7238 -> 0 bytes
 docs-tmp/assets/images/logo-big.png                |  Bin 7238 -> 0 bytes
 docs-tmp/assets/images/powers/alibaba.png          |  Bin 7247 -> 0 bytes
 docs-tmp/assets/images/powers/aws.jpg              |  Bin 6937 -> 0 bytes
 docs-tmp/assets/images/powers/bmw.png              |  Bin 29210 -> 0 bytes
 docs-tmp/assets/images/powers/emis.jpg             |  Bin 7113 -> 0 bytes
 docs-tmp/assets/images/powers/kyligence.png        |  Bin 1379 -> 0 bytes
 docs-tmp/assets/images/powers/lingyue.png          |  Bin 2953 -> 0 bytes
 docs-tmp/assets/images/powers/qq.png               |  Bin 3532 -> 0 bytes
 docs-tmp/assets/images/powers/shunfeng.png         |  Bin 5871 -> 0 bytes
 docs-tmp/assets/images/powers/tathastu.png         |  Bin 7771 -> 0 bytes
 docs-tmp/assets/images/powers/tongcheng.png        |  Bin 4207 -> 0 bytes
 docs-tmp/assets/images/powers/uber.png             |  Bin 7034 -> 0 bytes
 docs-tmp/assets/images/powers/yield.png            |  Bin 823 -> 0 bytes
 docs-tmp/assets/images/powers/yotpo.png            |  Bin 1697 -> 0 bytes
 docs-tmp/assets/images/roadmap.png                 |  Bin 146918 -> 0 bytes
 docs-tmp/assets/images/workflowarrow.png           |  Bin 3595 -> 0 bytes
 docs-tmp/assets/js/_main.js                        |  136 -
 docs-tmp/assets/js/lunr/lunr-en.js                 |   73 -
 docs-tmp/assets/js/lunr/lunr-gr.js                 |  526 ---
 docs-tmp/assets/js/lunr/lunr-store.js              |   54 -
 docs-tmp/assets/js/lunr/lunr.js                    | 3484 --------------------
 docs-tmp/assets/js/lunr/lunr.min.js                |    1 -
 docs-tmp/assets/js/main.min.js                     |    7 -
 docs-tmp/assets/js/plugins/gumshoe.js              |  484 ---
 .../js/plugins/jquery.ba-throttle-debounce.js      |  252 --
 docs-tmp/assets/js/plugins/jquery.fitvids.js       |   82 -
 .../assets/js/plugins/jquery.greedy-navigation.js  |   83 -
 .../assets/js/plugins/jquery.magnific-popup.js     | 1860 -----------
 docs-tmp/assets/js/plugins/smooth-scroll.js        |  632 ----
 docs-tmp/build_docs.sh                             |   50 -
 docs-tmp/doc-tmp.txt                               |   21 -
 docs-tmp/docker-compose.yml                        |   13 -
 178 files changed, 24877 deletions(-)

diff --git a/docs-tmp/.gitignore b/docs-tmp/.gitignore
deleted file mode 100644
index b7c1e82..0000000
--- a/docs-tmp/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-_site
-.sass-cache
-.jekyll-cache
-.jekyll-metadata
-.idea/
-*.iml
-.DS_Store
diff --git a/docs-tmp/Dockerfile b/docs-tmp/Dockerfile
deleted file mode 100644
index f0730d3..0000000
--- a/docs-tmp/Dockerfile
+++ /dev/null
@@ -1,27 +0,0 @@
-FROM jekyll/jekyll:3.8
-
-WORKDIR /tmp
-ADD Gemfile /tmp/
-ADD Gemfile.lock /tmp/
-RUN chmod a+w Gemfile.lock
-
-
-## pick up speed in china
-#RUN gem sources -l \
-# && gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ \
-# && gem sources -u \
-# && bundle config mirror.https://rubygems.org https://gems.ruby-china.com \
-# && bundle config --delete 'mirror.https://rubygems.org/' \
-# && sed -i "s/rubygems.org/gems.ruby-china.com/" Gemfile \
-# && sed -i "s/rubygems.org/gems.ruby-china.com/" Gemfile.lock
-
-
-RUN bundle install \
- && bundle update --bundler
-
-VOLUME /src
-EXPOSE 4000
-
-WORKDIR /src
-ENTRYPOINT ["bundle", "exec", "jekyll", "serve", "--force_polling", "-H", "0.0.0.0", "-P", "4000"]
-
diff --git a/docs-tmp/Gemfile b/docs-tmp/Gemfile
deleted file mode 100644
index c7c18a2..0000000
--- a/docs-tmp/Gemfile
+++ /dev/null
@@ -1,15 +0,0 @@
-source 'https://gems.ruby-china.com'
-
-# gem "github-pages", group: :jekyll_plugins
-
-gem "tzinfo-data"
-gem "wdm", "~> 0.1.0" if Gem.win_platform?
-
-# If you have any plugins, put them here!
-group :jekyll_plugins do
-  gem "jekyll-paginate"
-  gem "jekyll-sitemap"
-  gem "jemoji"
-  gem "jekyll-include-cache"
-  gem "jekyll-algolia"
-end
diff --git a/docs-tmp/Gemfile.lock b/docs-tmp/Gemfile.lock
deleted file mode 100644
index 2c4d052..0000000
--- a/docs-tmp/Gemfile.lock
+++ /dev/null
@@ -1,110 +0,0 @@
-GEM
-  remote: https://gems.ruby-china.com/
-  specs:
-    activesupport (3.2.22.5)
-      i18n (~> 0.6, >= 0.6.4)
-      multi_json (~> 1.0)
-    addressable (2.7.0)
-      public_suffix (>= 2.0.2, < 5.0)
-    algolia_html_extractor (2.6.2)
-      json (~> 2.0)
-      nokogiri (~> 1.10.4)
-    algoliasearch (1.27.1)
-      httpclient (~> 2.8, >= 2.8.3)
-      json (>= 1.5.1)
-    colorator (1.1.0)
-    concurrent-ruby (1.1.5)
-    em-websocket (0.5.1)
-      eventmachine (>= 0.12.9)
-      http_parser.rb (~> 0.6.0)
-    eventmachine (1.2.7)
-    ffi (1.11.3)
-    filesize (0.2.0)
-    forwardable-extended (2.6.0)
-    gemoji (3.0.1)
-    html-pipeline (2.12.2)
-      activesupport (>= 2)
-      nokogiri (>= 1.4)
-    http_parser.rb (0.6.0)
-    httpclient (2.8.3)
-    i18n (0.9.5)
-      concurrent-ruby (~> 1.0)
-    jekyll (3.8.5)
-      addressable (~> 2.4)
-      colorator (~> 1.0)
-      em-websocket (~> 0.5)
-      i18n (~> 0.7)
-      jekyll-sass-converter (~> 1.0)
-      jekyll-watch (~> 2.0)
-      kramdown (~> 1.14)
-      liquid (~> 4.0)
-      mercenary (~> 0.3.3)
-      pathutil (~> 0.9)
-      rouge (>= 1.7, < 4)
-      safe_yaml (~> 1.0)
-    jekyll-algolia (1.6.0)
-      algolia_html_extractor (~> 2.6)
-      algoliasearch (~> 1.26)
-      filesize (~> 0.1)
-      jekyll (>= 3.6, < 5.0)
-      json (~> 2.0)
-      nokogiri (~> 1.6)
-      progressbar (~> 1.9)
-      verbal_expressions (~> 0.1.5)
-    jekyll-include-cache (0.2.0)
-      jekyll (>= 3.7, < 5.0)
-    jekyll-paginate (1.1.0)
-    jekyll-sass-converter (1.5.2)
-      sass (~> 3.4)
-    jekyll-sitemap (1.4.0)
-      jekyll (>= 3.7, < 5.0)
-    jekyll-watch (2.2.1)
-      listen (~> 3.0)
-    jemoji (0.11.1)
-      gemoji (~> 3.0)
-      html-pipeline (~> 2.2)
-      jekyll (>= 3.0, < 5.0)
-    json (2.3.0)
-    kramdown (1.17.0)
-    liquid (4.0.3)
-    listen (3.2.1)
-      rb-fsevent (~> 0.10, >= 0.10.3)
-      rb-inotify (~> 0.9, >= 0.9.10)
-    mercenary (0.3.6)
-    mini_portile2 (2.4.0)
-    multi_json (1.14.1)
-    nokogiri (1.10.7)
-      mini_portile2 (~> 2.4.0)
-    pathutil (0.16.2)
-      forwardable-extended (~> 2.6)
-    progressbar (1.10.1)
-    public_suffix (3.1.1)
-    rb-fsevent (0.10.3)
-    rb-inotify (0.10.0)
-      ffi (~> 1.0)
-    rouge (3.13.0)
-    safe_yaml (1.0.5)
-    sass (3.7.4)
-      sass-listen (~> 4.0.0)
-    sass-listen (4.0.0)
-      rb-fsevent (~> 0.9, >= 0.9.4)
-      rb-inotify (~> 0.9, >= 0.9.7)
-    tzinfo (2.0.0)
-      concurrent-ruby (~> 1.0)
-    tzinfo-data (1.2019.3)
-      tzinfo (>= 1.0.0)
-    verbal_expressions (0.1.5)
-
-PLATFORMS
-  ruby
-
-DEPENDENCIES
-  jekyll-algolia
-  jekyll-include-cache
-  jekyll-paginate
-  jekyll-sitemap
-  jemoji
-  tzinfo-data
-
-BUNDLED WITH
-   2.0.2
diff --git a/docs-tmp/LICENSE b/docs-tmp/LICENSE
deleted file mode 100644
index af1e9d4..0000000
--- a/docs-tmp/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013-2019 Michael Rose and contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/docs-tmp/README.md b/docs-tmp/README.md
deleted file mode 100644
index 3c7f8b8..0000000
--- a/docs-tmp/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-## Site Documentation
-
-This folder contains resources that build the [Apache Hudi website](https://hudi.apache.org)
-
-
-### Building docs
-
-The site is based on a [Jekyll](https://jekyllrb.com/) theme hosted [here](https://github.com/mmistakes/minimal-mistakes/) with detailed instructions.
-
-#### Docker
-
-Simply run `docker-compose build --no-cache && docker-compose up` from the `docs` folder and the site should be up & running at `http://localhost:4000`
-
-To see edits reflect on the site, you may have to bounce the container
-
- - Stop existing container by `ctrl+c` the docker-compose program
- - (or) alternatively via `docker stop docs_server_1`
- - Bring up container again using `docker-compose up`
-
-#### Host OS
-
-To build directly on host OS (\*nix), first you need to install
-
-- gem, ruby (using apt-get/brew)
-- bundler (`gem install bundler`)
-- jekyll (`gem install jekyll`)
-- Update bundler `bundle update --bundler`
-
-and then run the following commands from `docs` folder to install dependencies
-
-`bundle install`
-
-and serve a local site
-
-`bundle exec jekyll serve`
-
-### Submitting changes
-
-To submit changes to the docs, please make the changes on the `asf-site` branch, build the site locally, test it out and submit a pull request with the changes to .md and theme files under `docs`
-
-### Updating site
-
-At a regular cadence, one of the Hudi committers will regenerate the site. In order to do this, first build it locally, test and then move the generated site from `_site` locally to `docs/../content`. Submit changes as a PR.
-
-### Automation
-Coming soon.
diff --git a/docs-tmp/_config.yml b/docs-tmp/_config.yml
deleted file mode 100644
index ddf0b0c..0000000
--- a/docs-tmp/_config.yml
+++ /dev/null
@@ -1,218 +0,0 @@
-# Welcome to Jekyll!
-#
-# This config file is meant for settings that affect your entire site, values
-# which you are expected to set up once and rarely need to edit after that.
-# For technical reasons, this file is *NOT* reloaded automatically when you use
-# `jekyll serve`. If you change this file, please restart the server process.
-
-#
-hudi_style_skin          : "hudi"
-
-version : &version "0.5.1-SNAPSHOT"
-
-previous_docs:
-  latest: /newsite-content/docs/quick-start-guide.html
-#  0.5.0-incubating: /versions/0.5.0-incubating/docs/quick-start-guide.html
-
-
-# Site Settings
-locale                   : "en-US"
-title                    : # "Apache Hudi (Incubating)"
-title_separator          : "-"
-subtitle                 : "Incubating" # *version
-description              : "Apache Hudi ingests & manages storage of large analytical datasets over DFS (HDFS or cloud stores)."
-url                      : https://hudi.apache.org # the base hostname & protocol for your site e.g. "https://github.com/apache/incubator-hudi.git"
-repository               : "apache/incubator-hudi"
-teaser                   : "/assets/images/500x300.png" # path of fallback teaser image, e.g. "/assets/images/500x300.png"
-logo                     : "/assets/images/hudi.png" # path of logo image to display in the masthead, e.g. "/assets/images/88x88.png"
-masthead_title           : # overrides the website title displayed in the masthead, use " " for no title
-host                     : 0.0.0.0
-site_url                 : https://hudi.apache.org
-
-# Site QuickLinks
-author:
-  name             : "Quick Links"
-  bio              : "Hudi *ingests* & *manages* storage of large analytical datasets over DFS."
-  links:
-    - label: "Documentation"
-      icon: "fa fa-book"
-      url: "/newsite-content/docs/quick-start-guide"
-    - label: "Technical Wiki"
-      icon: "fa fa-wikipedia-w"
-      url: "https://cwiki.apache.org/confluence/display/HUDI"
-    - label: "Contribution Guide"
-      icon: "fa fa-thumbs-o-up"
-      url: "/newsite-content/contributing"
-    - label: "Join on Slack"
-      icon: "fa fa-slack"
-      url: "https://join.slack.com/t/apache-hudi/shared_invite/enQtODYyNDAxNzc5MTg2LTE5OTBlYmVhYjM0N2ZhOTJjOWM4YzBmMWU2MjZjMGE4NDc5ZDFiOGQ2N2VkYTVkNzU3ZDQ4OTI1NmFmYWQ0NzE"
-    - label: "Fork on GitHub"
-      icon: "fa fa-github"
-      url: "https://github.com/apache/incubator-hudi"
-    - label: "Report Issues"
-      icon: "fa fa-navicon"
-      url: "https://issues.apache.org/jira/projects/HUDI/summary"
-
-
-# Layout Defaults
-defaults:
-  # _posts
-  - scope:
-      path: ""
-      type: posts
-    values:
-      layout: single
-      quick_link: true
-      related: true
-  # _pages
-  - scope:
-      path: "_pages"
-      type: pages
-    values:
-      layout: single
-      quick_link: true
-  # _docs
-  - scope:
-      path: ""
-      type: docs
-    values:
-      layout: single
-      quick_link: false
-      sidebar:
-        nav: "docs"
-
-
-# Reading Files
-include:
-  - .htaccess
-  - _pages
-exclude:
-  - "*.sublime-project"
-  - "*.sublime-workspace"
-  - vendor
-  - .asset-cache
-  - .bundle
-  - .jekyll-assets-cache
-  - .sass-cache
-  - assets/js/plugins
-  - assets/js/_main.js
-  - assets/js/vendor
-  - Capfile
-  - CHANGELOG
-  - config
-  - Gemfile
-  - Gruntfile.js
-  - gulpfile.js
-  - LICENSE
-  - log
-  - node_modules
-  - package.json
-  - Rakefile
-  - README
-  - tmp
-keep_files:
-  - .git
-  - .svn
-encoding: "utf-8"
-markdown_ext: "markdown,mkdown,mkdn,mkd,md"
-
-
-# Conversion
-markdown: kramdown
-highlighter: rouge
-lsi: false
-excerpt_separator: "\n\n"
-incremental: false
-
-
-# Markdown Processing
-kramdown:
-  input: GFM
-  hard_wrap: false
-  auto_ids: true
-  footnote_nr: 1
-  entity_output: as_char
-  toc_levels: 1..6
-  smart_quotes: lsquo,rsquo,ldquo,rdquo
-  enable_coderay: false
-
-
-# Collections
-collections:
-  docs:
-    output: true
-    permalink: /:collection/:path/
-  recipes:
-    output: true
-    permalink: /:collection/:path/
-  pets:
-    output: true
-    permalink: /:collection/:path/
-  portfolio:
-    output: true
-    permalink: /:collection/:path/
-
-
-# Sass/SCSS
-sass:
-  sass_dir: _sass
-  style: compressed # http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style
-
-
-# Outputting
-permalink: /:categories/:title/
-# paginate: 5 # amount of posts to show
-# paginate_path: /page:num/
-timezone: America/New_York # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
-
-
-# Plugins (previously gems:)
-plugins:
-  - jekyll-paginate
-  - jekyll-sitemap
-  - jemoji
-  - jekyll-include-cache
-
-# mimic GitHub Pages with --safe
-whitelist:
-  - jekyll-paginate
-  - jekyll-sitemap
-  - jemoji
-  - jekyll-include-cache
-
-
-# Archives
-#  Type
-#  - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default)
-#  - Jekyll Archives plugin archive pages ~> type: jekyll-archives
-#  Path (examples)
-#  - Archive page should exist at path when using Liquid method or you can
-#    expect broken links (especially with breadcrumbs enabled)
-#  - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/
-#  - <base_path/categories/my-awesome-category/index.html ~> path: /categories/
-#  - <base_path/my-awesome-category/index.html ~> path: /
-category_archive:
-  type: liquid
-  path: /categories/
-tag_archive:
-  type: liquid
-  path: /tags/
-# https://github.com/jekyll/jekyll-archives
-# jekyll-archives:
-#   enabled:
-#     - categories
-#     - tags
-#   layouts:
-#     category: archive-taxonomy
-#     tag: archive-taxonomy
-#   permalinks:
-#     category: /categories/:name/
-#     tag: /tags/:name/
-
-
-# HTML Compression
-# - http://jch.penibelst.de/
-compress_html:
-  clippings: all
-  ignore:
-    envs: development
diff --git a/docs-tmp/_data/navigation.yml b/docs-tmp/_data/navigation.yml
deleted file mode 100644
index d4c45bc..0000000
--- a/docs-tmp/_data/navigation.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-# main links
-main:
-  - title: "Documentation"
-    url: /newsite-content/docs/quick-start-guide.html
-  - title: "Community"
-    url: /newsite-content/community.html
-  - title: "Activities"
-    url: /newsite-content/activity.html
-  - title: "FAQ"
-    url: https://cwiki.apache.org/confluence/display/HUDI/FAQ
-  - title: "Releases"
-    url: /newsite-content/releases.html
-#  - title: "Roadmap"
-#    url: /roadmap.html
-
-# doc links
-docs:
-  - title: Getting Started
-    children:
-      - title: "Quick Start"
-        url: /newsite-content/docs/quick-start-guide.html
-#      - title: "Structure"
-      #        url: /docs/structure.html
-      - title: "Use Cases"
-        url: /newsite-content/docs/use_cases.html
-      - title: "Talks & Powered By"
-        url: /newsite-content/docs/powered_by.html
-      - title: "Comparison"
-        url: /newsite-content/docs/comparison.html
-      - title: "Docker Demo"
-        url: /newsite-content/docs/docker_demo.html
-  - title: Documentation
-    children:
-      - title: "Concepts"
-        url: /newsite-content/docs/concepts.html
-      - title: "Writing Data"
-        url: /newsite-content/docs/writing_data.html
-      - title: "Querying Data"
-        url: /newsite-content/docs/querying_data.html
-      - title: "Configuration"
-        url: /newsite-content/docs/configurations.html
-      - title: "Performance"
-        url: /newsite-content/docs/performance.html
-      - title: "Administering"
-        url: /newsite-content/docs/admin_guide.html
-  - title: INFO
-    children:
-      - title: "Docs Versions"
-        url: /newsite-content/docs/docs-versions.html
-      - title: "Privacy Policy"
-        url: /newsite-content/docs/privacy.html
-
diff --git a/docs-tmp/_data/ui-text.yml b/docs-tmp/_data/ui-text.yml
deleted file mode 100644
index cb49b6d..0000000
--- a/docs-tmp/_data/ui-text.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-# User interface text and labels
-
-# English (default)
-# -----------------
-en: &DEFAULT_EN
-  skip_links                 : "Skip links"
-  skip_primary_nav           : "Skip to primary navigation"
-  skip_content               : "Skip to content"
-  skip_footer                : "Skip to footer"
-  page                       : "Page"
-  pagination_previous        : "Previous"
-  pagination_next            : "Next"
-  breadcrumb_home_label      : "Home"
-  breadcrumb_separator       : "/"
-  menu_label                 : "Toggle menu"
-  search_label               : "Toggle search"
-  toc_label                  : "In this page"
-  ext_link_label             : "Direct link"
-  less_than                  : "less than"
-  minute_read                : "minute read"
-  share_on_label             : "Share on"
-  meta_label                 :
-  tags_label                 : "Tags:"
-  categories_label           : "Categories:"
-  date_label                 : "Updated:"
-  comments_label             : "Leave a comment"
-  comments_title             : "Comments"
-  more_label                 : "Learn more"
-  related_label              : "You may also enjoy"
-  follow_label               : "Follow:"
-  feed_label                 : "Feed"
-  powered_by                 : "Powered by"
-  website_label              : "Website"
-  email_label                : "Email"
-  recent_posts               : "Recent posts"
-  undefined_wpm              : "Undefined parameter words_per_minute at _config.yml"
-  comment_form_info          : "Your email address will not be published. Required fields are marked"
-  comment_form_comment_label : "Comment"
-  comment_form_md_info       : "Markdown is supported."
-  comment_form_name_label    : "Name"
-  comment_form_email_label   : "Email address"
-  comment_form_website_label : "Website (optional)"
-  comment_btn_submit         : "Submit comment"
-  comment_btn_submitted      : "Submitted"
-  comment_success_msg        : "Thanks for your comment! It will show on the site once it has been approved."
-  comment_error_msg          : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again."
-  loading_label              : "Loading..."
-  search_label_text          : "Enter your search term..."
-  search_placeholder_text    : "Enter your search term..."
-  results_found              : "Result(s) found"
-  back_to_top                : "Back to top"
-en-US:
-  <<: *DEFAULT_EN
-en-CA:
-  <<: *DEFAULT_EN
-en-GB:
-  <<: *DEFAULT_EN
-en-AU:
-  <<: *DEFAULT_EN
-
diff --git a/docs-tmp/_docs/0_1_s3_filesystem.md b/docs-tmp/_docs/0_1_s3_filesystem.md
deleted file mode 100644
index fd102a0..0000000
--- a/docs-tmp/_docs/0_1_s3_filesystem.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-title: S3 Filesystem
-keywords: hudi, hive, aws, s3, spark, presto
-permalink: /docs/s3_hoodie.html
-summary: In this page, we go over how to configure Hudi with S3 filesystem.
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-In this page, we explain how to get your Hudi spark job to store into AWS S3.
-
-## AWS configs
-
-There are two configurations required for Hudi-S3 compatibility:
-
-- Adding AWS Credentials for Hudi
-- Adding required Jars to classpath
-
-### AWS Credentials
-
-Simplest way to use Hudi with S3, is to configure your `SparkSession` or `SparkContext` with S3 credentials. Hudi will automatically pick this up and talk to S3.
-
-Alternatively, add the required configs in your core-site.xml from where Hudi can fetch them. Replace the `fs.defaultFS` with your S3 bucket name and Hudi should be able to read/write from the bucket.
-
-```xml
-  <property>
-      <name>fs.defaultFS</name>
-      <value>s3://ysharma</value>
-  </property>
-
-  <property>
-      <name>fs.s3.impl</name>
-      <value>org.apache.hadoop.fs.s3native.NativeS3FileSystem</value>
-  </property>
-
-  <property>
-      <name>fs.s3.awsAccessKeyId</name>
-      <value>AWS_KEY</value>
-  </property>
-
-  <property>
-       <name>fs.s3.awsSecretAccessKey</name>
-       <value>AWS_SECRET</value>
-  </property>
-
-  <property>
-       <name>fs.s3n.awsAccessKeyId</name>
-       <value>AWS_KEY</value>
-  </property>
-
-  <property>
-       <name>fs.s3n.awsSecretAccessKey</name>
-       <value>AWS_SECRET</value>
-  </property>
-```
-
-
-Utilities such as hudi-cli or deltastreamer tool, can pick up s3 creds via environmental variable prefixed with `HOODIE_ENV_`. For e.g below is a bash snippet to setup
-such variables and then have cli be able to work on datasets stored in s3
-
-```Java
-export HOODIE_ENV_fs_DOT_s3a_DOT_access_DOT_key=$accessKey
-export HOODIE_ENV_fs_DOT_s3a_DOT_secret_DOT_key=$secretKey
-export HOODIE_ENV_fs_DOT_s3_DOT_awsAccessKeyId=$accessKey
-export HOODIE_ENV_fs_DOT_s3_DOT_awsSecretAccessKey=$secretKey
-export HOODIE_ENV_fs_DOT_s3n_DOT_awsAccessKeyId=$accessKey
-export HOODIE_ENV_fs_DOT_s3n_DOT_awsSecretAccessKey=$secretKey
-export HOODIE_ENV_fs_DOT_s3n_DOT_impl=org.apache.hadoop.fs.s3a.S3AFileSystem
-```
-
-
-
-### AWS Libs
-
-AWS hadoop libraries to add to our classpath
-
- - com.amazonaws:aws-java-sdk:1.10.34
- - org.apache.hadoop:hadoop-aws:2.7.3
diff --git a/docs-tmp/_docs/0_2_gcs_filesystem.md b/docs-tmp/_docs/0_2_gcs_filesystem.md
deleted file mode 100644
index d5127b3..0000000
--- a/docs-tmp/_docs/0_2_gcs_filesystem.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: GCS Filesystem
-keywords: hudi, hive, google cloud, storage, spark, presto
-permalink: /docs/gcs_hoodie.html
-summary: In this page, we go over how to configure hudi with Google Cloud Storage.
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-For Hudi storage on GCS, **regional** buckets provide an DFS API with strong consistency.
-
-## GCS Configs
-
-There are two configurations required for Hudi GCS compatibility:
-
-- Adding GCS Credentials for Hudi
-- Adding required jars to classpath
-
-### GCS Credentials
-
-Add the required configs in your core-site.xml from where Hudi can fetch them. Replace the `fs.defaultFS` with your GCS bucket name and Hudi should be able to read/write from the bucket.
-
-```xml
-  <property>
-    <name>fs.defaultFS</name>
-    <value>gs://hudi-bucket</value>
-  </property>
-
-  <property>
-    <name>fs.gs.impl</name>
-    <value>com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem</value>
-    <description>The FileSystem for gs: (GCS) uris.</description>
-  </property>
-
-  <property>
-    <name>fs.AbstractFileSystem.gs.impl</name>
-    <value>com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS</value>
-    <description>The AbstractFileSystem for gs: (GCS) uris.</description>
-  </property>
-
-  <property>
-    <name>fs.gs.project.id</name>
-    <value>GCS_PROJECT_ID</value>
-  </property>
-  <property>
-    <name>google.cloud.auth.service.account.enable</name>
-    <value>true</value>
-  </property>
-  <property>
-    <name>google.cloud.auth.service.account.email</name>
-    <value>GCS_SERVICE_ACCOUNT_EMAIL</value>
-  </property>
-  <property>
-    <name>google.cloud.auth.service.account.keyfile</name>
-    <value>GCS_SERVICE_ACCOUNT_KEYFILE</value>
-  </property>
-```
-
-### GCS Libs
-
-GCS hadoop libraries to add to our classpath
-
-- com.google.cloud.bigdataoss:gcs-connector:1.6.0-hadoop2
diff --git a/docs-tmp/_docs/0_3_migration_guide.md b/docs-tmp/_docs/0_3_migration_guide.md
deleted file mode 100644
index 73202e2..0000000
--- a/docs-tmp/_docs/0_3_migration_guide.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-title: Migration Guide
-keywords: hudi, migration, use case
-permalink: /docs/migration_guide.html
-summary: In this page, we will discuss some available tools for migrating your existing dataset into a Hudi dataset
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-Hudi maintains metadata such as commit timeline and indexes to manage a dataset. The commit timelines helps to understand the actions happening on a dataset as well as the current state of a dataset. Indexes are used by Hudi to maintain a record key to file id mapping to efficiently locate a record. At the moment, Hudi supports writing only parquet columnar formats.
-To be able to start using Hudi for your existing dataset, you will need to migrate your existing dataset into a Hudi managed dataset. There are a couple of ways to achieve this.
-
-
-## Approaches
-
-
-### Use Hudi for new partitions alone
-
-Hudi can be used to manage an existing dataset without affecting/altering the historical data already present in the
-dataset. Hudi has been implemented to be compatible with such a mixed dataset with a caveat that either the complete
-Hive partition is Hudi managed or not. Thus the lowest granularity at which Hudi manages a dataset is a Hive
-partition. Start using the datasource API or the WriteClient to write to the dataset and make sure you start writing
-to a new partition or convert your last N partitions into Hudi instead of the entire table. Note, since the historical
- partitions are not managed by HUDI, none of the primitives provided by HUDI work on the data in those partitions. More concretely, one cannot perform upserts or incremental pull on such older partitions not managed by the HUDI dataset.
-Take this approach if your dataset is an append only type of dataset and you do not expect to perform any updates to existing (or non Hudi managed) partitions.
-
-
-### Convert existing dataset to Hudi
-
-Import your existing dataset into a Hudi managed dataset. Since all the data is Hudi managed, none of the limitations
- of Approach 1 apply here. Updates spanning any partitions can be applied to this dataset and Hudi will efficiently
- make the update available to queries. Note that not only do you get to use all Hudi primitives on this dataset,
- there are other additional advantages of doing this. Hudi automatically manages file sizes of a Hudi managed dataset
- . You can define the desired file size when converting this dataset and Hudi will ensure it writes out files
- adhering to the config. It will also ensure that smaller files later get corrected by routing some new inserts into
- small files rather than writing new small ones thus maintaining the health of your cluster.
-
-There are a few options when choosing this approach.
-
-**Option 1**
-Use the HDFSParquetImporter tool. As the name suggests, this only works if your existing dataset is in parquet file format.
-This tool essentially starts a Spark Job to read the existing parquet dataset and converts it into a HUDI managed dataset by re-writing all the data.
-
-**Option 2**
-For huge datasets, this could be as simple as : 
-```java
-for partition in [list of partitions in source dataset] {
-        val inputDF = spark.read.format("any_input_format").load("partition_path")
-        inputDF.write.format("org.apache.hudi").option()....save("basePath")
-}
-```  
-
-**Option 3**
-Write your own custom logic of how to load an existing dataset into a Hudi managed one. Please read about the RDD API
- [here](/docs/quick-start-guide). Using the HDFSParquetImporter Tool. Once hudi has been built via `mvn clean install -DskipTests`, the shell can be
-fired by via `cd hudi-cli && ./hudi-cli.sh`.
-
-```java
-hudi->hdfsparquetimport
-        --upsert false
-        --srcPath /user/parquet/dataset/basepath
-        --targetPath
-        /user/hoodie/dataset/basepath
-        --tableName hoodie_table
-        --tableType COPY_ON_WRITE
-        --rowKeyField _row_key
-        --partitionPathField partitionStr
-        --parallelism 1500
-        --schemaFilePath /user/table/schema
-        --format parquet
-        --sparkMemory 6g
-        --retry 2
-```
diff --git a/docs-tmp/_docs/0_4_docker_demo.md b/docs-tmp/_docs/0_4_docker_demo.md
deleted file mode 100644
index 87c0716..0000000
--- a/docs-tmp/_docs/0_4_docker_demo.md
+++ /dev/null
@@ -1,1152 +0,0 @@
----
-title: Docker Demo
-keywords: hudi, docker, demo
-permalink: /docs/docker_demo.html
-toc: true
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-## A Demo using docker containers
-
-Lets use a real world example to see how hudi works end to end. For this purpose, a self contained
-data infrastructure is brought up in a local docker cluster within your computer.
-
-The steps have been tested on a Mac laptop
-
-### Prerequisites
-
-  * Docker Setup :  For Mac, Please follow the steps as defined in [https://docs.docker.com/v17.12/docker-for-mac/install/]. For running Spark-SQL queries, please ensure atleast 6 GB and 4 CPUs are allocated to Docker (See Docker -> Preferences -> Advanced). Otherwise, spark-SQL queries could be killed because of memory issues.
-  * kafkacat : A command-line utility to publish/consume from kafka topics. Use `brew install kafkacat` to install kafkacat
-  * /etc/hosts : The demo references many services running in container by the hostname. Add the following settings to /etc/hosts
-
-
-```java
-   127.0.0.1 adhoc-1
-   127.0.0.1 adhoc-2
-   127.0.0.1 namenode
-   127.0.0.1 datanode1
-   127.0.0.1 hiveserver
-   127.0.0.1 hivemetastore
-   127.0.0.1 kafkabroker
-   127.0.0.1 sparkmaster
-   127.0.0.1 zookeeper
-```
-
-Also, this has not been tested on some environments like Docker on Windows.
-
-
-## Setting up Docker Cluster
-
-
-### Build Hudi
-
-The first step is to build hudi
-```java
-cd <HUDI_WORKSPACE>
-mvn package -DskipTests
-```
-
-### Bringing up Demo Cluster
-
-The next step is to run the docker compose script and setup configs for bringing up the cluster.
-This should pull the docker images from docker hub and setup docker cluster.
-
-```java
-cd docker
-./setup_demo.sh
-....
-....
-....
-Stopping spark-worker-1            ... done
-Stopping hiveserver                ... done
-Stopping hivemetastore             ... done
-Stopping historyserver             ... done
-.......
-......
-Creating network "hudi_demo" with the default driver
-Creating hive-metastore-postgresql ... done
-Creating namenode                  ... done
-Creating zookeeper                 ... done
-Creating kafkabroker               ... done
-Creating hivemetastore             ... done
-Creating historyserver             ... done
-Creating hiveserver                ... done
-Creating datanode1                 ... done
-Creating presto-coordinator-1      ... done
-Creating sparkmaster               ... done
-Creating presto-worker-1           ... done
-Creating adhoc-1                   ... done
-Creating adhoc-2                   ... done
-Creating spark-worker-1            ... done
-Copying spark default config and setting up configs
-Copying spark default config and setting up configs
-Copying spark default config and setting up configs
-$ docker ps
-```
-
-At this point, the docker cluster will be up and running. The demo cluster brings up the following services
-
-   * HDFS Services (NameNode, DataNode)
-   * Spark Master and Worker
-   * Hive Services (Metastore, HiveServer2 along with PostgresDB)
-   * Kafka Broker and a Zookeeper Node (Kakfa will be used as upstream source for the demo)
-   * Adhoc containers to run Hudi/Hive CLI commands
-
-## Demo
-
-Stock Tracker data will be used to showcase both different Hudi Views and the effects of Compaction.
-
-Take a look at the directory `docker/demo/data`. There are 2 batches of stock data - each at 1 minute granularity.
-The first batch contains stocker tracker data for some stock symbols during the first hour of trading window
-(9:30 a.m to 10:30 a.m). The second batch contains tracker data for next 30 mins (10:30 - 11 a.m). Hudi will
-be used to ingest these batches to a dataset which will contain the latest stock tracker data at hour level granularity.
-The batches are windowed intentionally so that the second batch contains updates to some of the rows in the first batch.
-
-### Step 1 : Publish the first batch to Kafka
-
-Upload the first batch to Kafka topic 'stock ticks' `cat docker/demo/data/batch_1.json | kafkacat -b kafkabroker -t stock_ticks -P`
-
-To check if the new topic shows up, use
-```java
-kafkacat -b kafkabroker -L -J | jq .
-{
-  "originating_broker": {
-    "id": 1001,
-    "name": "kafkabroker:9092/1001"
-  },
-  "query": {
-    "topic": "*"
-  },
-  "brokers": [
-    {
-      "id": 1001,
-      "name": "kafkabroker:9092"
-    }
-  ],
-  "topics": [
-    {
-      "topic": "stock_ticks",
-      "partitions": [
-        {
-          "partition": 0,
-          "leader": 1001,
-          "replicas": [
-            {
-              "id": 1001
-            }
-          ],
-          "isrs": [
-            {
-              "id": 1001
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}
-
-```
-
-### Step 2: Incrementally ingest data from Kafka topic
-
-Hudi comes with a tool named DeltaStreamer. This tool can connect to variety of data sources (including Kafka) to
-pull changes and apply to Hudi dataset using upsert/insert primitives. Here, we will use the tool to download
-json data from kafka topic and ingest to both COW and MOR tables we initialized in the previous step. This tool
-automatically initializes the datasets in the file-system if they do not exist yet.
-
-```java
-docker exec -it adhoc-2 /bin/bash
-
-# Run the following spark-submit command to execute the delta-streamer and ingest to stock_ticks_cow dataset in HDFS
-spark-submit --class org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer $HUDI_UTILITIES_BUNDLE --storage-type COPY_ON_WRITE --source-class org.apache.hudi.utilities.sources.JsonKafkaSource --source-ordering-field ts  --target-base-path /user/hive/warehouse/stock_ticks_cow --target-table stock_ticks_cow --props /var/demo/config/kafka-source.properties --schemaprovider-class org.apache.hudi.utilities.schema.FilebasedSchemaProvider
-
-
-# Run the following spark-submit command to execute the delta-streamer and ingest to stock_ticks_mor dataset in HDFS
-spark-submit --class org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer $HUDI_UTILITIES_BUNDLE --storage-type MERGE_ON_READ --source-class org.apache.hudi.utilities.sources.JsonKafkaSource --source-ordering-field ts  --target-base-path /user/hive/warehouse/stock_ticks_mor --target-table stock_ticks_mor --props /var/demo/config/kafka-source.properties --schemaprovider-class org.apache.hudi.utilities.schema.FilebasedSchemaProvider --disable-compaction
-
-
-# As part of the setup (Look at setup_demo.sh), the configs needed for DeltaStreamer is uploaded to HDFS. The configs
-# contain mostly Kafa connectivity settings, the avro-schema to be used for ingesting along with key and partitioning fields.
-
-exit
-```
-
-You can use HDFS web-browser to look at the datasets
-`http://namenode:50070/explorer.html#/user/hive/warehouse/stock_ticks_cow`.
-
-You can explore the new partition folder created in the dataset along with a "deltacommit"
-file under .hoodie which signals a successful commit.
-
-There will be a similar setup when you browse the MOR dataset
-`http://namenode:50070/explorer.html#/user/hive/warehouse/stock_ticks_mor`
-
-
-### Step 3: Sync with Hive
-
-At this step, the datasets are available in HDFS. We need to sync with Hive to create new Hive tables and add partitions
-inorder to run Hive queries against those datasets.
-
-```java
-docker exec -it adhoc-2 /bin/bash
-
-# THis command takes in HIveServer URL and COW Hudi Dataset location in HDFS and sync the HDFS state to Hive
-/var/hoodie/ws/hudi-hive/run_sync_tool.sh  --jdbc-url jdbc:hive2://hiveserver:10000 --user hive --pass hive --partitioned-by dt --base-path /user/hive/warehouse/stock_ticks_cow --database default --table stock_ticks_cow
-.....
-2018-09-24 22:22:45,568 INFO  [main] hive.HiveSyncTool (HiveSyncTool.java:syncHoodieTable(112)) - Sync complete for stock_ticks_cow
-.....
-
-# Now run hive-sync for the second data-set in HDFS using Merge-On-Read (MOR storage)
-/var/hoodie/ws/hudi-hive/run_sync_tool.sh  --jdbc-url jdbc:hive2://hiveserver:10000 --user hive --pass hive --partitioned-by dt --base-path /user/hive/warehouse/stock_ticks_mor --database default --table stock_ticks_mor
-...
-2018-09-24 22:23:09,171 INFO  [main] hive.HiveSyncTool (HiveSyncTool.java:syncHoodieTable(112)) - Sync complete for stock_ticks_mor
-...
-2018-09-24 22:23:09,559 INFO  [main] hive.HiveSyncTool (HiveSyncTool.java:syncHoodieTable(112)) - Sync complete for stock_ticks_mor_rt
-....
-exit
-```
-After executing the above command, you will notice
-
-1. A hive table named `stock_ticks_cow` created which provides Read-Optimized view for the Copy On Write dataset.
-2. Two new tables `stock_ticks_mor` and `stock_ticks_mor_rt` created for the Merge On Read dataset. The former
-provides the ReadOptimized view for the Hudi dataset and the later provides the realtime-view for the dataset.
-
-
-### Step 4 (a): Run Hive Queries
-
-Run a hive query to find the latest timestamp ingested for stock symbol 'GOOG'. You will notice that both read-optimized
-(for both COW and MOR dataset)and realtime views (for MOR dataset)give the same value "10:29 a.m" as Hudi create a
-parquet file for the first batch of data.
-
-```java
-docker exec -it adhoc-2 /bin/bash
-beeline -u jdbc:hive2://hiveserver:10000 --hiveconf hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat --hiveconf hive.stats.autogather=false
-# List Tables
-0: jdbc:hive2://hiveserver:10000> show tables;
-+---------------------+--+
-|      tab_name       |
-+---------------------+--+
-| stock_ticks_cow     |
-| stock_ticks_mor     |
-| stock_ticks_mor_rt  |
-+---------------------+--+
-2 rows selected (0.801 seconds)
-0: jdbc:hive2://hiveserver:10000>
-
-
-# Look at partitions that were added
-0: jdbc:hive2://hiveserver:10000> show partitions stock_ticks_mor_rt;
-+----------------+--+
-|   partition    |
-+----------------+--+
-| dt=2018-08-31  |
-+----------------+--+
-1 row selected (0.24 seconds)
-
-
-# COPY-ON-WRITE Queries:
-=========================
-
-
-0: jdbc:hive2://hiveserver:10000> select symbol, max(ts) from stock_ticks_cow group by symbol HAVING symbol = 'GOOG';
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:29:00  |
-+---------+----------------------+--+
-
-Now, run a projection query:
-
-0: jdbc:hive2://hiveserver:10000> select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_cow where  symbol = 'GOOG';
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924221953       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924221953       | GOOG    | 2018-08-31 10:29:00  | 3391    | 1230.1899  | 1230.085  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-
-# Merge-On-Read Queries:
-==========================
-
-Lets run similar queries against M-O-R dataset. Lets look at both
-ReadOptimized and Realtime views supported by M-O-R dataset
-
-# Run against ReadOptimized View. Notice that the latest timestamp is 10:29
-0: jdbc:hive2://hiveserver:10000> select symbol, max(ts) from stock_ticks_mor group by symbol HAVING symbol = 'GOOG';
-WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:29:00  |
-+---------+----------------------+--+
-1 row selected (6.326 seconds)
-
-
-# Run against Realtime View. Notice that the latest timestamp is again 10:29
-
-0: jdbc:hive2://hiveserver:10000> select symbol, max(ts) from stock_ticks_mor_rt group by symbol HAVING symbol = 'GOOG';
-WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:29:00  |
-+---------+----------------------+--+
-1 row selected (1.606 seconds)
-
-
-# Run projection query against Read Optimized and Realtime tables
-
-0: jdbc:hive2://hiveserver:10000> select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor where  symbol = 'GOOG';
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924222155       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924222155       | GOOG    | 2018-08-31 10:29:00  | 3391    | 1230.1899  | 1230.085  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-0: jdbc:hive2://hiveserver:10000> select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor_rt where  symbol = 'GOOG';
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924222155       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924222155       | GOOG    | 2018-08-31 10:29:00  | 3391    | 1230.1899  | 1230.085  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-exit
-exit
-```
-
-### Step 4 (b): Run Spark-SQL Queries
-Hudi support Spark as query processor just like Hive. Here are the same hive queries
-running in spark-sql
-
-```java
-docker exec -it adhoc-1 /bin/bash
-$SPARK_INSTALL/bin/spark-shell --jars $HUDI_SPARK_BUNDLE --master local[2] --driver-class-path $HADOOP_CONF_DIR --conf spark.sql.hive.convertMetastoreParquet=false --deploy-mode client  --driver-memory 1G --executor-memory 3G --num-executors 1  --packages com.databricks:spark-avro_2.11:4.0.0
-...
-
-Welcome to
-      ____              __
-     / __/__  ___ _____/ /__
-    _\ \/ _ \/ _ `/ __/  '_/
-   /___/ .__/\_,_/_/ /_/\_\   version 2.3.1
-      /_/
-
-Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_181)
-Type in expressions to have them evaluated.
-Type :help for more information.
-
-scala>
-scala> spark.sql("show tables").show(100, false)
-+--------+------------------+-----------+
-|database|tableName         |isTemporary|
-+--------+------------------+-----------+
-|default |stock_ticks_cow   |false      |
-|default |stock_ticks_mor   |false      |
-|default |stock_ticks_mor_rt|false      |
-+--------+------------------+-----------+
-
-# Copy-On-Write Table
-
-## Run max timestamp query against COW table
-
-scala> spark.sql("select symbol, max(ts) from stock_ticks_cow group by symbol HAVING symbol = 'GOOG'").show(100, false)
-[Stage 0:>                                                          (0 + 1) / 1]SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
-SLF4J: Defaulting to no-operation (NOP) logger implementation
-SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
-+------+-------------------+
-|symbol|max(ts)            |
-+------+-------------------+
-|GOOG  |2018-08-31 10:29:00|
-+------+-------------------+
-
-## Projection Query
-
-scala> spark.sql("select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_cow where  symbol = 'GOOG'").show(100, false)
-+-------------------+------+-------------------+------+---------+--------+
-|_hoodie_commit_time|symbol|ts                 |volume|open     |close   |
-+-------------------+------+-------------------+------+---------+--------+
-|20180924221953     |GOOG  |2018-08-31 09:59:00|6330  |1230.5   |1230.02 |
-|20180924221953     |GOOG  |2018-08-31 10:29:00|3391  |1230.1899|1230.085|
-+-------------------+------+-------------------+------+---------+--------+
-
-# Merge-On-Read Queries:
-==========================
-
-Lets run similar queries against M-O-R dataset. Lets look at both
-ReadOptimized and Realtime views supported by M-O-R dataset
-
-# Run against ReadOptimized View. Notice that the latest timestamp is 10:29
-scala> spark.sql("select symbol, max(ts) from stock_ticks_mor group by symbol HAVING symbol = 'GOOG'").show(100, false)
-+------+-------------------+
-|symbol|max(ts)            |
-+------+-------------------+
-|GOOG  |2018-08-31 10:29:00|
-+------+-------------------+
-
-
-# Run against Realtime View. Notice that the latest timestamp is again 10:29
-
-scala> spark.sql("select symbol, max(ts) from stock_ticks_mor_rt group by symbol HAVING symbol = 'GOOG'").show(100, false)
-+------+-------------------+
-|symbol|max(ts)            |
-+------+-------------------+
-|GOOG  |2018-08-31 10:29:00|
-+------+-------------------+
-
-# Run projection query against Read Optimized and Realtime tables
-
-scala> spark.sql("select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor where  symbol = 'GOOG'").show(100, false)
-+-------------------+------+-------------------+------+---------+--------+
-|_hoodie_commit_time|symbol|ts                 |volume|open     |close   |
-+-------------------+------+-------------------+------+---------+--------+
-|20180924222155     |GOOG  |2018-08-31 09:59:00|6330  |1230.5   |1230.02 |
-|20180924222155     |GOOG  |2018-08-31 10:29:00|3391  |1230.1899|1230.085|
-+-------------------+------+-------------------+------+---------+--------+
-
-scala> spark.sql("select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor_rt where  symbol = 'GOOG'").show(100, false)
-+-------------------+------+-------------------+------+---------+--------+
-|_hoodie_commit_time|symbol|ts                 |volume|open     |close   |
-+-------------------+------+-------------------+------+---------+--------+
-|20180924222155     |GOOG  |2018-08-31 09:59:00|6330  |1230.5   |1230.02 |
-|20180924222155     |GOOG  |2018-08-31 10:29:00|3391  |1230.1899|1230.085|
-+-------------------+------+-------------------+------+---------+--------+
-
-```
-
-### Step 4 (c): Run Presto Queries
-
-Here are the Presto queries for similar Hive and Spark queries. Currently, Hudi does not support Presto queries on realtime views.
-
-```java
-docker exec -it presto-worker-1 presto --server presto-coordinator-1:8090
-presto> show catalogs;
-  Catalog
------------
- hive
- jmx
- localfile
- system
-(4 rows)
-
-Query 20190817_134851_00000_j8rcz, FINISHED, 1 node
-Splits: 19 total, 19 done (100.00%)
-0:04 [0 rows, 0B] [0 rows/s, 0B/s]
-
-presto> use hive.default;
-USE
-presto:default> show tables;
-       Table
---------------------
- stock_ticks_cow
- stock_ticks_mor
- stock_ticks_mor_rt
-(3 rows)
-
-Query 20190822_181000_00001_segyw, FINISHED, 2 nodes
-Splits: 19 total, 19 done (100.00%)
-0:05 [3 rows, 99B] [0 rows/s, 18B/s]
-
-
-# COPY-ON-WRITE Queries:
-=========================
-
-
-presto:default> select symbol, max(ts) from stock_ticks_cow group by symbol HAVING symbol = 'GOOG';
- symbol |        _col1
---------+---------------------
- GOOG   | 2018-08-31 10:29:00
-(1 row)
-
-Query 20190822_181011_00002_segyw, FINISHED, 1 node
-Splits: 49 total, 49 done (100.00%)
-0:12 [197 rows, 613B] [16 rows/s, 50B/s]
-
-presto:default> select "_hoodie_commit_time", symbol, ts, volume, open, close from stock_ticks_cow where symbol = 'GOOG';
- _hoodie_commit_time | symbol |         ts          | volume |   open    |  close
----------------------+--------+---------------------+--------+-----------+----------
- 20190822180221      | GOOG   | 2018-08-31 09:59:00 |   6330 |    1230.5 |  1230.02
- 20190822180221      | GOOG   | 2018-08-31 10:29:00 |   3391 | 1230.1899 | 1230.085
-(2 rows)
-
-Query 20190822_181141_00003_segyw, FINISHED, 1 node
-Splits: 17 total, 17 done (100.00%)
-0:02 [197 rows, 613B] [109 rows/s, 341B/s]
-
-
-# Merge-On-Read Queries:
-==========================
-
-Lets run similar queries against M-O-R dataset. 
-
-# Run against ReadOptimized View. Notice that the latest timestamp is 10:29
-presto:default> select symbol, max(ts) from stock_ticks_mor group by symbol HAVING symbol = 'GOOG';
- symbol |        _col1
---------+---------------------
- GOOG   | 2018-08-31 10:29:00
-(1 row)
-
-Query 20190822_181158_00004_segyw, FINISHED, 1 node
-Splits: 49 total, 49 done (100.00%)
-0:02 [197 rows, 613B] [110 rows/s, 343B/s]
-
-
-presto:default>  select "_hoodie_commit_time", symbol, ts, volume, open, close  from stock_ticks_mor where  symbol = 'GOOG';
- _hoodie_commit_time | symbol |         ts          | volume |   open    |  close
----------------------+--------+---------------------+--------+-----------+----------
- 20190822180250      | GOOG   | 2018-08-31 09:59:00 |   6330 |    1230.5 |  1230.02
- 20190822180250      | GOOG   | 2018-08-31 10:29:00 |   3391 | 1230.1899 | 1230.085
-(2 rows)
-
-Query 20190822_181256_00006_segyw, FINISHED, 1 node
-Splits: 17 total, 17 done (100.00%)
-0:02 [197 rows, 613B] [92 rows/s, 286B/s]
-
-presto:default> exit
-```
-
-### Step 5: Upload second batch to Kafka and run DeltaStreamer to ingest
-
-Upload the second batch of data and ingest this batch using delta-streamer. As this batch does not bring in any new
-partitions, there is no need to run hive-sync
-
-```java
-cat docker/demo/data/batch_2.json | kafkacat -b kafkabroker -t stock_ticks -P
-
-# Within Docker container, run the ingestion command
-docker exec -it adhoc-2 /bin/bash
-
-# Run the following spark-submit command to execute the delta-streamer and ingest to stock_ticks_cow dataset in HDFS
-spark-submit --class org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer $HUDI_UTILITIES_BUNDLE --storage-type COPY_ON_WRITE --source-class org.apache.hudi.utilities.sources.JsonKafkaSource --source-ordering-field ts  --target-base-path /user/hive/warehouse/stock_ticks_cow --target-table stock_ticks_cow --props /var/demo/config/kafka-source.properties --schemaprovider-class org.apache.hudi.utilities.schema.FilebasedSchemaProvider
-
-
-# Run the following spark-submit command to execute the delta-streamer and ingest to stock_ticks_mor dataset in HDFS
-spark-submit --class org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer $HUDI_UTILITIES_BUNDLE --storage-type MERGE_ON_READ --source-class org.apache.hudi.utilities.sources.JsonKafkaSource --source-ordering-field ts  --target-base-path /user/hive/warehouse/stock_ticks_mor --target-table stock_ticks_mor --props /var/demo/config/kafka-source.properties --schemaprovider-class org.apache.hudi.utilities.schema.FilebasedSchemaProvider --disable-compaction
-
-exit
-```
-
-With Copy-On-Write table, the second ingestion by DeltaStreamer resulted in a new version of Parquet file getting created.
-See `http://namenode:50070/explorer.html#/user/hive/warehouse/stock_ticks_cow/2018/08/31`
-
-With Merge-On-Read table, the second ingestion merely appended the batch to an unmerged delta (log) file.
-Take a look at the HDFS filesystem to get an idea: `http://namenode:50070/explorer.html#/user/hive/warehouse/stock_ticks_mor/2018/08/31`
-
-### Step 6(a): Run Hive Queries
-
-With Copy-On-Write table, the read-optimized view immediately sees the changes as part of second batch once the batch
-got committed as each ingestion creates newer versions of parquet files.
-
-With Merge-On-Read table, the second ingestion merely appended the batch to an unmerged delta (log) file.
-This is the time, when ReadOptimized and Realtime views will provide different results. ReadOptimized view will still
-return "10:29 am" as it will only read from the Parquet file. Realtime View will do on-the-fly merge and return
-latest committed data which is "10:59 a.m".
-
-```java
-docker exec -it adhoc-2 /bin/bash
-beeline -u jdbc:hive2://hiveserver:10000 --hiveconf hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat --hiveconf hive.stats.autogather=false
-
-# Copy On Write Table:
-
-0: jdbc:hive2://hiveserver:10000> select symbol, max(ts) from stock_ticks_cow group by symbol HAVING symbol = 'GOOG';
-WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:59:00  |
-+---------+----------------------+--+
-1 row selected (1.932 seconds)
-
-0: jdbc:hive2://hiveserver:10000> select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_cow where  symbol = 'GOOG';
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924221953       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924224524       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-As you can notice, the above queries now reflect the changes that came as part of ingesting second batch.
-
-
-# Merge On Read Table:
-
-# Read Optimized View
-0: jdbc:hive2://hiveserver:10000> select symbol, max(ts) from stock_ticks_mor group by symbol HAVING symbol = 'GOOG';
-WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:29:00  |
-+---------+----------------------+--+
-1 row selected (1.6 seconds)
-
-0: jdbc:hive2://hiveserver:10000> select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor where  symbol = 'GOOG';
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924222155       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924222155       | GOOG    | 2018-08-31 10:29:00  | 3391    | 1230.1899  | 1230.085  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-# Realtime View
-0: jdbc:hive2://hiveserver:10000> select symbol, max(ts) from stock_ticks_mor_rt group by symbol HAVING symbol = 'GOOG';
-WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:59:00  |
-+---------+----------------------+--+
-
-0: jdbc:hive2://hiveserver:10000> select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor_rt where  symbol = 'GOOG';
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924222155       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924224537       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-exit
-exit
-```
-
-### Step 6(b): Run Spark SQL Queries
-
-Running the same queries in Spark-SQL:
-
-```java
-docker exec -it adhoc-1 /bin/bash
-bash-4.4# $SPARK_INSTALL/bin/spark-shell --jars $HUDI_SPARK_BUNDLE --driver-class-path $HADOOP_CONF_DIR --conf spark.sql.hive.convertMetastoreParquet=false --deploy-mode client  --driver-memory 1G --master local[2] --executor-memory 3G --num-executors 1  --packages com.databricks:spark-avro_2.11:4.0.0
-
-# Copy On Write Table:
-
-scala> spark.sql("select symbol, max(ts) from stock_ticks_cow group by symbol HAVING symbol = 'GOOG'").show(100, false)
-+------+-------------------+
-|symbol|max(ts)            |
-+------+-------------------+
-|GOOG  |2018-08-31 10:59:00|
-+------+-------------------+
-
-scala> spark.sql("select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_cow where  symbol = 'GOOG'").show(100, false)
-
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924221953       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924224524       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-As you can notice, the above queries now reflect the changes that came as part of ingesting second batch.
-
-
-# Merge On Read Table:
-
-# Read Optimized View
-scala> spark.sql("select symbol, max(ts) from stock_ticks_mor group by symbol HAVING symbol = 'GOOG'").show(100, false)
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:29:00  |
-+---------+----------------------+--+
-1 row selected (1.6 seconds)
-
-scala> spark.sql("select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor where  symbol = 'GOOG'").show(100, false)
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924222155       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924222155       | GOOG    | 2018-08-31 10:29:00  | 3391    | 1230.1899  | 1230.085  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-# Realtime View
-scala> spark.sql("select symbol, max(ts) from stock_ticks_mor_rt group by symbol HAVING symbol = 'GOOG'").show(100, false)
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:59:00  |
-+---------+----------------------+--+
-
-scala> spark.sql("select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor_rt where  symbol = 'GOOG'").show(100, false)
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924222155       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924224537       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-exit
-exit
-```
-
-### Step 6(c): Run Presto Queries
-
-Running the same queries on Presto for ReadOptimized views. 
-
-
-```java
-docker exec -it presto-worker-1 presto --server presto-coordinator-1:8090
-presto> use hive.default;
-USE
-
-# Copy On Write Table:
-
-presto:default>select symbol, max(ts) from stock_ticks_cow group by symbol HAVING symbol = 'GOOG';
- symbol |        _col1
---------+---------------------
- GOOG   | 2018-08-31 10:59:00
-(1 row)
-
-Query 20190822_181530_00007_segyw, FINISHED, 1 node
-Splits: 49 total, 49 done (100.00%)
-0:02 [197 rows, 613B] [125 rows/s, 389B/s]
-
-presto:default>select "_hoodie_commit_time", symbol, ts, volume, open, close  from stock_ticks_cow where  symbol = 'GOOG';
- _hoodie_commit_time | symbol |         ts          | volume |   open    |  close
----------------------+--------+---------------------+--------+-----------+----------
- 20190822180221      | GOOG   | 2018-08-31 09:59:00 |   6330 |    1230.5 |  1230.02
- 20190822181433      | GOOG   | 2018-08-31 10:59:00 |   9021 | 1227.1993 | 1227.215
-(2 rows)
-
-Query 20190822_181545_00008_segyw, FINISHED, 1 node
-Splits: 17 total, 17 done (100.00%)
-0:02 [197 rows, 613B] [106 rows/s, 332B/s]
-
-As you can notice, the above queries now reflect the changes that came as part of ingesting second batch.
-
-
-# Merge On Read Table:
-
-# Read Optimized View
-presto:default> select symbol, max(ts) from stock_ticks_mor group by symbol HAVING symbol = 'GOOG';
- symbol |        _col1
---------+---------------------
- GOOG   | 2018-08-31 10:29:00
-(1 row)
-
-Query 20190822_181602_00009_segyw, FINISHED, 1 node
-Splits: 49 total, 49 done (100.00%)
-0:01 [197 rows, 613B] [139 rows/s, 435B/s]
-
-presto:default>select "_hoodie_commit_time", symbol, ts, volume, open, close  from stock_ticks_mor where  symbol = 'GOOG';
- _hoodie_commit_time | symbol |         ts          | volume |   open    |  close
----------------------+--------+---------------------+--------+-----------+----------
- 20190822180250      | GOOG   | 2018-08-31 09:59:00 |   6330 |    1230.5 |  1230.02
- 20190822180250      | GOOG   | 2018-08-31 10:29:00 |   3391 | 1230.1899 | 1230.085
-(2 rows)
-
-Query 20190822_181615_00010_segyw, FINISHED, 1 node
-Splits: 17 total, 17 done (100.00%)
-0:01 [197 rows, 613B] [154 rows/s, 480B/s]
-
-presto:default> exit
-```
-
-
-### Step 7 : Incremental Query for COPY-ON-WRITE Table
-
-With 2 batches of data ingested, lets showcase the support for incremental queries in Hudi Copy-On-Write datasets
-
-Lets take the same projection query example
-
-```java
-docker exec -it adhoc-2 /bin/bash
-beeline -u jdbc:hive2://hiveserver:10000 --hiveconf hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat --hiveconf hive.stats.autogather=false
-
-0: jdbc:hive2://hiveserver:10000> select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_cow where  symbol = 'GOOG';
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924064621       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924065039       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-```
-
-As you notice from the above queries, there are 2 commits - 20180924064621 and 20180924065039 in timeline order.
-When you follow the steps, you will be getting different timestamps for commits. Substitute them
-in place of the above timestamps.
-
-To show the effects of incremental-query, let us assume that a reader has already seen the changes as part of
-ingesting first batch. Now, for the reader to see effect of the second batch, he/she has to keep the start timestamp to
-the commit time of the first batch (20180924064621) and run incremental query
-
-Hudi incremental mode provides efficient scanning for incremental queries by filtering out files that do not have any
-candidate rows using hudi-managed metadata.
-
-```java
-docker exec -it adhoc-2 /bin/bash
-beeline -u jdbc:hive2://hiveserver:10000 --hiveconf hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat --hiveconf hive.stats.autogather=false
-0: jdbc:hive2://hiveserver:10000> set hoodie.stock_ticks_cow.consume.mode=INCREMENTAL;
-No rows affected (0.009 seconds)
-0: jdbc:hive2://hiveserver:10000>  set hoodie.stock_ticks_cow.consume.max.commits=3;
-No rows affected (0.009 seconds)
-0: jdbc:hive2://hiveserver:10000> set hoodie.stock_ticks_cow.consume.start.timestamp=20180924064621;
-```
-
-With the above setting, file-ids that do not have any updates from the commit 20180924065039 is filtered out without scanning.
-Here is the incremental query :
-
-```java
-0: jdbc:hive2://hiveserver:10000>
-0: jdbc:hive2://hiveserver:10000> select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_cow where  symbol = 'GOOG' and `_hoodie_commit_time` > '20180924064621';
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924065039       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-1 row selected (0.83 seconds)
-0: jdbc:hive2://hiveserver:10000>
-```
-
-### Incremental Query with Spark SQL:
-```java
-docker exec -it adhoc-1 /bin/bash
-bash-4.4# $SPARK_INSTALL/bin/spark-shell --jars $HUDI_SPARK_BUNDLE --driver-class-path $HADOOP_CONF_DIR --conf spark.sql.hive.convertMetastoreParquet=false --deploy-mode client  --driver-memory 1G --master local[2] --executor-memory 3G --num-executors 1  --packages com.databricks:spark-avro_2.11:4.0.0
-Welcome to
-      ____              __
-     / __/__  ___ _____/ /__
-    _\ \/ _ \/ _ `/ __/  '_/
-   /___/ .__/\_,_/_/ /_/\_\   version 2.3.1
-      /_/
-
-Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_181)
-Type in expressions to have them evaluated.
-Type :help for more information.
-
-scala> import org.apache.hudi.DataSourceReadOptions
-import org.apache.hudi.DataSourceReadOptions
-
-# In the below query, 20180925045257 is the first commit's timestamp
-scala> val hoodieIncViewDF =  spark.read.format("org.apache.hudi").option(DataSourceReadOptions.VIEW_TYPE_OPT_KEY, DataSourceReadOptions.VIEW_TYPE_INCREMENTAL_OPT_VAL).option(DataSourceReadOptions.BEGIN_INSTANTTIME_OPT_KEY, "20180924064621").load("/user/hive/warehouse/stock_ticks_cow")
-SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
-SLF4J: Defaulting to no-operation (NOP) logger implementation
-SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
-hoodieIncViewDF: org.apache.spark.sql.DataFrame = [_hoodie_commit_time: string, _hoodie_commit_seqno: string ... 15 more fields]
-
-scala> hoodieIncViewDF.registerTempTable("stock_ticks_cow_incr_tmp1")
-warning: there was one deprecation warning; re-run with -deprecation for details
-
-scala> spark.sql("select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_cow_incr_tmp1 where  symbol = 'GOOG'").show(100, false);
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924065039       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-```
-
-
-### Step 8: Schedule and Run Compaction for Merge-On-Read dataset
-
-Lets schedule and run a compaction to create a new version of columnar  file so that read-optimized readers will see fresher data.
-Again, You can use Hudi CLI to manually schedule and run compaction
-
-```java
-docker exec -it adhoc-1 /bin/bash
-root@adhoc-1:/opt#   /var/hoodie/ws/hudi-cli/hudi-cli.sh
-============================================
-*                                          *
-*     _    _           _   _               *
-*    | |  | |         | | (_)              *
-*    | |__| |       __| |  -               *
-*    |  __  ||   | / _` | ||               *
-*    | |  | ||   || (_| | ||               *
-*    |_|  |_|\___/ \____/ ||               *
-*                                          *
-============================================
-
-Welcome to Hoodie CLI. Please type help if you are looking for help.
-hudi->connect --path /user/hive/warehouse/stock_ticks_mor
-18/09/24 06:59:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
-18/09/24 06:59:35 INFO table.HoodieTableMetaClient: Loading HoodieTableMetaClient from /user/hive/warehouse/stock_ticks_mor
-18/09/24 06:59:35 INFO util.FSUtils: Hadoop Configuration: fs.defaultFS: [hdfs://namenode:8020], Config:[Configuration: core-default.xml, core-site.xml, mapred-default.xml, mapred-site.xml, yarn-default.xml, yarn-site.xml, hdfs-default.xml, hdfs-site.xml], FileSystem: [DFS[DFSClient[clientName=DFSClient_NONMAPREDUCE_-1261652683_11, ugi=root (auth:SIMPLE)]]]
-18/09/24 06:59:35 INFO table.HoodieTableConfig: Loading dataset properties from /user/hive/warehouse/stock_ticks_mor/.hoodie/hoodie.properties
-18/09/24 06:59:36 INFO table.HoodieTableMetaClient: Finished Loading Table of type MERGE_ON_READ from /user/hive/warehouse/stock_ticks_mor
-Metadata for table stock_ticks_mor loaded
-
-# Ensure no compactions are present
-
-hoodie:stock_ticks_mor->compactions show all
-18/09/24 06:59:54 INFO timeline.HoodieActiveTimeline: Loaded instants [[20180924064636__clean__COMPLETED], [20180924064636__deltacommit__COMPLETED], [20180924065057__clean__COMPLETED], [20180924065057__deltacommit__COMPLETED]]
-    ___________________________________________________________________
-    | Compaction Instant Time| State    | Total FileIds to be Compacted|
-    |==================================================================|
-
-
-
-
-# Schedule a compaction. This will use Spark Launcher to schedule compaction
-hoodie:stock_ticks_mor->compaction schedule
-....
-Compaction successfully completed for 20180924070031
-
-# Now refresh and check again. You will see that there is a new compaction requested
-
-hoodie:stock_ticks->connect --path /user/hive/warehouse/stock_ticks_mor
-18/09/24 07:01:16 INFO table.HoodieTableMetaClient: Loading HoodieTableMetaClient from /user/hive/warehouse/stock_ticks_mor
-18/09/24 07:01:16 INFO util.FSUtils: Hadoop Configuration: fs.defaultFS: [hdfs://namenode:8020], Config:[Configuration: core-default.xml, core-site.xml, mapred-default.xml, mapred-site.xml, yarn-default.xml, yarn-site.xml, hdfs-default.xml, hdfs-site.xml], FileSystem: [DFS[DFSClient[clientName=DFSClient_NONMAPREDUCE_-1261652683_11, ugi=root (auth:SIMPLE)]]]
-18/09/24 07:01:16 INFO table.HoodieTableConfig: Loading dataset properties from /user/hive/warehouse/stock_ticks_mor/.hoodie/hoodie.properties
-18/09/24 07:01:16 INFO table.HoodieTableMetaClient: Finished Loading Table of type MERGE_ON_READ from /user/hive/warehouse/stock_ticks_mor
-Metadata for table stock_ticks_mor loaded
-
-
-
-hoodie:stock_ticks_mor->compactions show all
-18/09/24 06:34:12 INFO timeline.HoodieActiveTimeline: Loaded instants [[20180924041125__clean__COMPLETED], [20180924041125__deltacommit__COMPLETED], [20180924042735__clean__COMPLETED], [20180924042735__deltacommit__COMPLETED], [==>20180924063245__compaction__REQUESTED]]
-    ___________________________________________________________________
-    | Compaction Instant Time| State    | Total FileIds to be Compacted|
-    |==================================================================|
-    | 20180924070031         | REQUESTED| 1                            |
-
-
-
-
-# Execute the compaction. The compaction instant value passed below must be the one displayed in the above "compactions show all" query
-hoodie:stock_ticks_mor->compaction run --compactionInstant  20180924070031 --parallelism 2 --sparkMemory 1G  --schemaFilePath /var/demo/config/schema.avsc --retry 1  
-....
-Compaction successfully completed for 20180924070031
-
-
-## Now check if compaction is completed
-
-hoodie:stock_ticks_mor->connect --path /user/hive/warehouse/stock_ticks_mor
-18/09/24 07:03:00 INFO table.HoodieTableMetaClient: Loading HoodieTableMetaClient from /user/hive/warehouse/stock_ticks_mor
-18/09/24 07:03:00 INFO util.FSUtils: Hadoop Configuration: fs.defaultFS: [hdfs://namenode:8020], Config:[Configuration: core-default.xml, core-site.xml, mapred-default.xml, mapred-site.xml, yarn-default.xml, yarn-site.xml, hdfs-default.xml, hdfs-site.xml], FileSystem: [DFS[DFSClient[clientName=DFSClient_NONMAPREDUCE_-1261652683_11, ugi=root (auth:SIMPLE)]]]
-18/09/24 07:03:00 INFO table.HoodieTableConfig: Loading dataset properties from /user/hive/warehouse/stock_ticks_mor/.hoodie/hoodie.properties
-18/09/24 07:03:00 INFO table.HoodieTableMetaClient: Finished Loading Table of type MERGE_ON_READ from /user/hive/warehouse/stock_ticks_mor
-Metadata for table stock_ticks_mor loaded
-
-
-
-hoodie:stock_ticks->compactions show all
-18/09/24 07:03:15 INFO timeline.HoodieActiveTimeline: Loaded instants [[20180924064636__clean__COMPLETED], [20180924064636__deltacommit__COMPLETED], [20180924065057__clean__COMPLETED], [20180924065057__deltacommit__COMPLETED], [20180924070031__commit__COMPLETED]]
-    ___________________________________________________________________
-    | Compaction Instant Time| State    | Total FileIds to be Compacted|
-    |==================================================================|
-    | 20180924070031         | COMPLETED| 1                            |
-
-```
-
-### Step 9: Run Hive Queries including incremental queries
-
-You will see that both ReadOptimized and Realtime Views will show the latest committed data.
-Lets also run the incremental query for MOR table.
-From looking at the below query output, it will be clear that the fist commit time for the MOR table is 20180924064636
-and the second commit time is 20180924070031
-
-```java
-docker exec -it adhoc-2 /bin/bash
-beeline -u jdbc:hive2://hiveserver:10000 --hiveconf hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat --hiveconf hive.stats.autogather=false
-
-# Read Optimized View
-0: jdbc:hive2://hiveserver:10000> select symbol, max(ts) from stock_ticks_mor group by symbol HAVING symbol = 'GOOG';
-WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:59:00  |
-+---------+----------------------+--+
-1 row selected (1.6 seconds)
-
-0: jdbc:hive2://hiveserver:10000> select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor where  symbol = 'GOOG';
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924064636       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924070031       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-# Realtime View
-0: jdbc:hive2://hiveserver:10000> select symbol, max(ts) from stock_ticks_mor_rt group by symbol HAVING symbol = 'GOOG';
-WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:59:00  |
-+---------+----------------------+--+
-
-0: jdbc:hive2://hiveserver:10000> select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor_rt where  symbol = 'GOOG';
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924064636       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924070031       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-# Incremental View:
-
-0: jdbc:hive2://hiveserver:10000> set hoodie.stock_ticks_mor.consume.mode=INCREMENTAL;
-No rows affected (0.008 seconds)
-# Max-Commits covers both second batch and compaction commit
-0: jdbc:hive2://hiveserver:10000> set hoodie.stock_ticks_mor.consume.max.commits=3;
-No rows affected (0.007 seconds)
-0: jdbc:hive2://hiveserver:10000> set hoodie.stock_ticks_mor.consume.start.timestamp=20180924064636;
-No rows affected (0.013 seconds)
-# Query:
-0: jdbc:hive2://hiveserver:10000> select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor where  symbol = 'GOOG' and `_hoodie_commit_time` > '20180924064636';
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924070031       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-exit
-exit
-```
-
-### Step 10: Read Optimized and Realtime Views for MOR with Spark-SQL after compaction
-
-```java
-docker exec -it adhoc-1 /bin/bash
-bash-4.4# $SPARK_INSTALL/bin/spark-shell --jars $HUDI_SPARK_BUNDLE --driver-class-path $HADOOP_CONF_DIR --conf spark.sql.hive.convertMetastoreParquet=false --deploy-mode client  --driver-memory 1G --master local[2] --executor-memory 3G --num-executors 1  --packages com.databricks:spark-avro_2.11:4.0.0
-
-# Read Optimized View
-scala> spark.sql("select symbol, max(ts) from stock_ticks_mor group by symbol HAVING symbol = 'GOOG'").show(100, false)
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:59:00  |
-+---------+----------------------+--+
-1 row selected (1.6 seconds)
-
-scala> spark.sql("select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor where  symbol = 'GOOG'").show(100, false)
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924064636       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924070031       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-
-# Realtime View
-scala> spark.sql("select symbol, max(ts) from stock_ticks_mor_rt group by symbol HAVING symbol = 'GOOG'").show(100, false)
-+---------+----------------------+--+
-| symbol  |         _c1          |
-+---------+----------------------+--+
-| GOOG    | 2018-08-31 10:59:00  |
-+---------+----------------------+--+
-
-scala> spark.sql("select `_hoodie_commit_time`, symbol, ts, volume, open, close  from stock_ticks_mor_rt where  symbol = 'GOOG'").show(100, false)
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| _hoodie_commit_time  | symbol  |          ts          | volume  |    open    |   close   |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-| 20180924064636       | GOOG    | 2018-08-31 09:59:00  | 6330    | 1230.5     | 1230.02   |
-| 20180924070031       | GOOG    | 2018-08-31 10:59:00  | 9021    | 1227.1993  | 1227.215  |
-+----------------------+---------+----------------------+---------+------------+-----------+--+
-```
-
-### Step 11:  Presto queries over Read Optimized View on MOR dataset after compaction
-
-```java
-docker exec -it presto-worker-1 presto --server presto-coordinator-1:8090
-presto> use hive.default;
-USE
-
-# Read Optimized View
-resto:default> select symbol, max(ts) from stock_ticks_mor group by symbol HAVING symbol = 'GOOG';
-  symbol |        _col1
---------+---------------------
- GOOG   | 2018-08-31 10:59:00
-(1 row)
-
-Query 20190822_182319_00011_segyw, FINISHED, 1 node
-Splits: 49 total, 49 done (100.00%)
-0:01 [197 rows, 613B] [133 rows/s, 414B/s]
-
-presto:default> select "_hoodie_commit_time", symbol, ts, volume, open, close  from stock_ticks_mor where  symbol = 'GOOG';
- _hoodie_commit_time | symbol |         ts          | volume |   open    |  close
----------------------+--------+---------------------+--------+-----------+----------
- 20190822180250      | GOOG   | 2018-08-31 09:59:00 |   6330 |    1230.5 |  1230.02
- 20190822181944      | GOOG   | 2018-08-31 10:59:00 |   9021 | 1227.1993 | 1227.215
-(2 rows)
-
-Query 20190822_182333_00012_segyw, FINISHED, 1 node
-Splits: 17 total, 17 done (100.00%)
-0:02 [197 rows, 613B] [98 rows/s, 307B/s]
-
-presto:default>
-
-```
-
-
-This brings the demo to an end.
-
-## Testing Hudi in Local Docker environment
-
-You can bring up a hadoop docker environment containing Hadoop, Hive and Spark services with support for hudi.
-```java
-$ mvn pre-integration-test -DskipTests
-```
-The above command builds docker images for all the services with
-current Hudi source installed at /var/hoodie/ws and also brings up the services using a compose file. We
-currently use Hadoop (v2.8.4), Hive (v2.3.3) and Spark (v2.3.1) in docker images.
-
-To bring down the containers
-```java
-$ cd hudi-integ-test
-$ mvn docker-compose:down
-```
-
-If you want to bring up the docker containers, use
-```java
-$ cd hudi-integ-test
-$  mvn docker-compose:up -DdetachedMode=true
-```
-
-Hudi is a library that is operated in a broader data analytics/ingestion environment
-involving Hadoop, Hive and Spark. Interoperability with all these systems is a key objective for us. We are
-actively adding integration-tests under __hudi-integ-test/src/test/java__ that makes use of this
-docker environment (See __hudi-integ-test/src/test/java/org/apache/hudi/integ/ITTestHoodieSanity.java__ )
-
-
-### Building Local Docker Containers:
-
-The docker images required for demo and running integration test are already in docker-hub. The docker images
-and compose scripts are carefully implemented so that they serve dual-purpose
-
-1. The docker images have inbuilt hudi jar files with environment variable pointing to those jars (HUDI_HADOOP_BUNDLE, ...)
-2. For running integration-tests, we need the jars generated locally to be used for running services within docker. The
-   docker-compose scripts (see `docker/compose/docker-compose_hadoop284_hive233_spark231.yml`) ensures local jars override
-   inbuilt jars by mounting local HUDI workspace over the docker location
-
-This helps avoid maintaining separate docker images and avoids the costly step of building HUDI docker images locally.
-But if users want to test hudi from locations with lower network bandwidth, they can still build local images
-run the script
-`docker/build_local_docker_images.sh` to build local docker images before running `docker/setup_demo.sh`
-
-Here are the commands:
-
-```java
-cd docker
-./build_local_docker_images.sh
-.....
-
-[INFO] Reactor Summary:
-[INFO]
-[INFO] hoodie ............................................. SUCCESS [  1.709 s]
-[INFO] hudi-common ...................................... SUCCESS [  9.015 s]
-[INFO] hudi-hadoop-mr ................................... SUCCESS [  1.108 s]
-[INFO] hudi-client ...................................... SUCCESS [  4.409 s]
-[INFO] hudi-hive ........................................ SUCCESS [  0.976 s]
-[INFO] hudi-spark ....................................... SUCCESS [ 26.522 s]
-[INFO] hudi-utilities ................................... SUCCESS [ 16.256 s]
-[INFO] hudi-cli ......................................... SUCCESS [ 11.341 s]
-[INFO] hudi-hadoop-mr-bundle ............................ SUCCESS [  1.893 s]
-[INFO] hudi-hive-bundle ................................. SUCCESS [ 14.099 s]
-[INFO] hudi-spark-bundle ................................ SUCCESS [ 58.252 s]
-[INFO] hudi-hadoop-docker ............................... SUCCESS [  0.612 s]
-[INFO] hudi-hadoop-base-docker .......................... SUCCESS [04:04 min]
-[INFO] hudi-hadoop-namenode-docker ...................... SUCCESS [  6.142 s]
-[INFO] hudi-hadoop-datanode-docker ...................... SUCCESS [  7.763 s]
-[INFO] hudi-hadoop-history-docker ....................... SUCCESS [  5.922 s]
-[INFO] hudi-hadoop-hive-docker .......................... SUCCESS [ 56.152 s]
-[INFO] hudi-hadoop-sparkbase-docker ..................... SUCCESS [01:18 min]
-[INFO] hudi-hadoop-sparkmaster-docker ................... SUCCESS [  2.964 s]
-[INFO] hudi-hadoop-sparkworker-docker ................... SUCCESS [  3.032 s]
-[INFO] hudi-hadoop-sparkadhoc-docker .................... SUCCESS [  2.764 s]
-[INFO] hudi-integ-test .................................. SUCCESS [  1.785 s]
-[INFO] ------------------------------------------------------------------------
-[INFO] BUILD SUCCESS
-[INFO] ------------------------------------------------------------------------
-[INFO] Total time: 09:15 min
-[INFO] Finished at: 2018-09-10T17:47:37-07:00
-[INFO] Final Memory: 236M/1848M
-[INFO] ------------------------------------------------------------------------
-```
diff --git a/docs-tmp/_docs/1_1_quick_start_guide.md b/docs-tmp/_docs/1_1_quick_start_guide.md
deleted file mode 100644
index b3668d9..0000000
--- a/docs-tmp/_docs/1_1_quick_start_guide.md
+++ /dev/null
@@ -1,174 +0,0 @@
----
-title: "Quick-Start Guide"
-permalink: /docs/quick-start-guide.html
-toc: true
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-This guide provides a quick peek at Hudi's capabilities using spark-shell. Using Spark datasources, we will walk through 
-code snippets that allows you to insert and update a Hudi dataset of default storage type: 
-[Copy on Write](/newsite-content/docs/concepts.html#copy-on-write-storage). 
-After each write operation we will also show how to read the data both snapshot and incrementally.
-
-## Setup spark-shell
-
-Hudi works with Spark-2.x versions. You can follow instructions [here](https://spark.apache.org/downloads.html) for setting up spark. 
-From the extracted directory run spark-shell with Hudi as:
-
-```scala
-bin/spark-shell --packages org.apache.hudi:hudi-spark-bundle:0.5.0-incubating \
-    --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'
-```
-
-Setup table name, base path and a data generator to generate records for this guide.
-
-```scala
-import org.apache.hudi.QuickstartUtils._
-import scala.collection.JavaConversions._
-import org.apache.spark.sql.SaveMode._
-import org.apache.hudi.DataSourceReadOptions._
-import org.apache.hudi.DataSourceWriteOptions._
-import org.apache.hudi.config.HoodieWriteConfig._
-
-val tableName = "hudi_cow_table"
-val basePath = "file:///tmp/hudi_cow_table"
-val dataGen = new DataGenerator
-```
-
-The [DataGenerator](https://github.com/apache/incubator-hudi/blob/master/hudi-spark/src/main/java/org/apache/hudi/QuickstartUtils.java) 
-can generate sample inserts and updates based on the the sample trip schema [here](https://github.com/apache/incubator-hudi/blob/master/hudi-spark/src/main/java/org/apache/hudi/QuickstartUtils.java#L57)
-{: .notice--info}
-
-
-## Insert data
-
-Generate some new trips, load them into a DataFrame and write the DataFrame into the Hudi dataset as below.
-
-```scala
-val inserts = convertToStringList(dataGen.generateInserts(10))
-val df = spark.read.json(spark.sparkContext.parallelize(inserts, 2))
-df.write.format("org.apache.hudi").
-    options(getQuickstartWriteConfigs).
-    option(PRECOMBINE_FIELD_OPT_KEY, "ts").
-    option(RECORDKEY_FIELD_OPT_KEY, "uuid").
-    option(PARTITIONPATH_FIELD_OPT_KEY, "partitionpath").
-    option(TABLE_NAME, tableName).
-    mode(Overwrite).
-    save(basePath);
-``` 
-
-`mode(Overwrite)` overwrites and recreates the dataset if it already exists.
-You can check the data generated under `/tmp/hudi_cow_table/<region>/<country>/<city>/`. We provided a record key 
-(`uuid` in [schema](#sample-schema)), partition field (`region/county/city`) and combine logic (`ts` in 
-[schema](#sample-schema)) to ensure trip records are unique within each partition. For more info, refer to 
-[Modeling data stored in Hudi](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=113709185#Frequentlyaskedquestions(FAQ)-HowdoImodelthedatastoredinHudi?)
-and for info on ways to ingest data into Hudi, refer to [Writing Hudi Datasets](/newsite-content/docs/writing_data.html).
-Here we are using the default write operation : `upsert`. If you have a workload without updates, you can also issue 
-`insert` or `bulk_insert` operations which could be faster. To know more, refer to [Write operations](/newsite-content/docs/writing_data#write-operations)
-{: .notice--info}
- 
-## Query data 
-
-Load the data files into a DataFrame.
-
-```scala
-val roViewDF = spark.
-    read.
-    format("org.apache.hudi").
-    load(basePath + "/*/*/*/*")
-roViewDF.createOrReplaceTempView("hudi_ro_table")
-spark.sql("select fare, begin_lon, begin_lat, ts from  hudi_ro_table where fare > 20.0").show()
-spark.sql("select _hoodie_commit_time, _hoodie_record_key, _hoodie_partition_path, rider, driver, fare from  hudi_ro_table").show()
-```
-
-This query provides a read optimized view of the ingested data. Since our partition path (`region/country/city`) is 3 levels nested 
-from base path we ve used `load(basePath + "/*/*/*/*")`. 
-Refer to [Storage Types and Views](/newsite-content/docs/concepts#storage-types--views) for more info on all storage types and views supported.
-{: .notice--info}
-
-## Update data
-
-This is similar to inserting new data. Generate updates to existing trips using the data generator, load into a DataFrame 
-and write DataFrame into the hudi dataset.
-
-```scala
-val updates = convertToStringList(dataGen.generateUpdates(10))
-val df = spark.read.json(spark.sparkContext.parallelize(updates, 2));
-df.write.format("org.apache.hudi").
-    options(getQuickstartWriteConfigs).
-    option(PRECOMBINE_FIELD_OPT_KEY, "ts").
-    option(RECORDKEY_FIELD_OPT_KEY, "uuid").
-    option(PARTITIONPATH_FIELD_OPT_KEY, "partitionpath").
-    option(TABLE_NAME, tableName).
-    mode(Append).
-    save(basePath);
-```
-
-Notice that the save mode is now `Append`. In general, always use append mode unless you are trying to create the dataset for the first time.
-[Querying](#query-data) the data again will now show updated trips. Each write operation generates a new [commit](/newsite-content/docs/concepts.html) 
-denoted by the timestamp. Look for changes in `_hoodie_commit_time`, `rider`, `driver` fields for the same `_hoodie_record_key`s in previous commit. 
-{: .notice--info}
-
-## Incremental query
-
-Hudi also provides capability to obtain a stream of records that changed since given commit timestamp. 
-This can be achieved using Hudi's incremental view and providing a begin time from which changes need to be streamed. 
-We do not need to specify endTime, if we want all changes after the given commit (as is the common case). 
-
-```scala
-// reload data
-spark.
-    read.
-    format("org.apache.hudi").
-    load(basePath + "/*/*/*/*").
-    createOrReplaceTempView("hudi_ro_table")
-
-val commits = spark.sql("select distinct(_hoodie_commit_time) as commitTime from  hudi_ro_table order by commitTime").map(k => k.getString(0)).take(50)
-val beginTime = commits(commits.length - 2) // commit time we are interested in
-
-// incrementally query data
-val incViewDF = spark.
-    read.
-    format("org.apache.hudi").
-    option(VIEW_TYPE_OPT_KEY, VIEW_TYPE_INCREMENTAL_OPT_VAL).
-    option(BEGIN_INSTANTTIME_OPT_KEY, beginTime).
-    load(basePath);
-incViewDF.registerTempTable("hudi_incr_table")
-spark.sql("select `_hoodie_commit_time`, fare, begin_lon, begin_lat, ts from  hudi_incr_table where fare > 20.0").show()
-``` 
-
-This will give all changes that happened after the beginTime commit with the filter of fare > 20.0. The unique thing about this
-feature is that it now lets you author streaming pipelines on batch data.
-{: .notice--info}
-
-## Point in time query
-
-Lets look at how to query data as of a specific time. The specific time can be represented by pointing endTime to a 
-specific commit time and beginTime to "000" (denoting earliest possible commit time). 
-
-```scala
-val beginTime = "000" // Represents all commits > this time.
-val endTime = commits(commits.length - 2) // commit time we are interested in
-
-//incrementally query data
-val incViewDF = spark.read.format("org.apache.hudi").
-    option(VIEW_TYPE_OPT_KEY, VIEW_TYPE_INCREMENTAL_OPT_VAL).
-    option(BEGIN_INSTANTTIME_OPT_KEY, beginTime).
-    option(END_INSTANTTIME_OPT_KEY, endTime).
-    load(basePath);
-incViewDF.registerTempTable("hudi_incr_table")
-spark.sql("select `_hoodie_commit_time`, fare, begin_lon, begin_lat, ts from  hudi_incr_table where fare > 20.0").show()
-``` 
-
-## Where to go from here?
-
-You can also do the quickstart by [building hudi yourself](https://github.com/apache/incubator-hudi#building-apache-hudi-from-source), 
-and using `--jars <path to hudi_code>/packaging/hudi-spark-bundle/target/hudi-spark-bundle-*.*.*-SNAPSHOT.jar` in the spark-shell command above
-instead of `--packages org.apache.hudi:hudi-spark-bundle:0.5.0-incubating`
-
-Also, we used Spark here to show case the capabilities of Hudi. However, Hudi can support multiple storage types/views and 
-Hudi datasets can be queried from query engines like Hive, Spark, Presto and much more. We have put together a 
-[demo video](https://www.youtube.com/watch?v=VhNgUsxdrD0) that show cases all of this on a docker based setup with all 
-dependent systems running locally. We recommend you replicate the same setup and run the demo yourself, by following 
-steps [here](/newsite-content/docs/docker_demo.html) to get a taste for it. Also, if you are looking for ways to migrate your existing data 
-to Hudi, refer to [migration guide](/newsite-content/docs/migration_guide.html). 
diff --git a/docs-tmp/_docs/1_2_structure.md b/docs-tmp/_docs/1_2_structure.md
deleted file mode 100644
index bf8f373..0000000
--- a/docs-tmp/_docs/1_2_structure.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Structure
-keywords: big data, stream processing, cloud, hdfs, storage, upserts, change capture
-permalink: /docs/structure.html
-summary: "Hudi brings stream processing to big data, providing fresh data while being an order of magnitude efficient over traditional batch processing."
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-Hudi (pronounced “Hoodie”) ingests & manages storage of large analytical datasets over DFS ([HDFS](http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html) or cloud stores) and provides three logical views for query access.
-
- * **Read Optimized View** - Provides excellent query performance on pure columnar storage, much like plain [Parquet](https://parquet.apache.org/) tables.
- * **Incremental View** - Provides a change stream out of the dataset to feed downstream jobs/ETLs.
- * **Near-Real time Table** - Provides queries on real-time data, using a combination of columnar & row based storage (e.g Parquet + [Avro](http://avro.apache.org/docs/current/mr.html))
-
-<figure>
-    <img class="docimage" src="/assets/images/hudi_intro_1.png" alt="hudi_intro_1.png" />
-</figure>
-
-By carefully managing how data is laid out in storage & how it’s exposed to queries, Hudi is able to power a rich data ecosystem where external sources can be ingested in near real-time and made available for interactive SQL Engines like [Presto](https://prestodb.io) & [Spark](https://spark.apache.org/sql/), while at the same time capable of being consumed incrementally from processing/ETL frameworks like [Hive](https://hive.apache.org/) & [Spark](https://spark.apache.org/docs/latest/) t [...]
-
-Hudi broadly consists of a self contained Spark library to build datasets and integrations with existing query engines for data access. See [quickstart](/docs/quick-start-guide) for a demo.
diff --git a/docs-tmp/_docs/1_3_use_cases.md b/docs-tmp/_docs/1_3_use_cases.md
deleted file mode 100644
index da45e81..0000000
--- a/docs-tmp/_docs/1_3_use_cases.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: "Use Cases"
-keywords: hudi, data ingestion, etl, real time, use cases
-permalink: /docs/use_cases.html
-summary: "Following are some sample use-cases for Hudi, which illustrate the benefits in terms of faster processing & increased efficiency"
-toc: true
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-## Near Real-Time Ingestion
-
-Ingesting data from external sources like (event logs, databases, external sources) into a [Hadoop Data Lake](http://martinfowler.com/bliki/DataLake.html) is a well known problem.
-In most (if not all) Hadoop deployments, it is unfortunately solved in a piecemeal fashion, using a medley of ingestion tools,
-even though this data is arguably the most valuable for the entire organization.
-
-For RDBMS ingestion, Hudi provides __faster loads via Upserts__, as opposed costly & inefficient bulk loads. For e.g, you can read the MySQL BIN log or [Sqoop Incremental Import](https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_incremental_imports) and apply them to an
-equivalent Hudi table on DFS. This would be much faster/efficient than a [bulk merge job](https://sqoop.apache.org/docs/1.4.0-incubating/SqoopUserGuide.html#id1770457)
-or [complicated handcrafted merge workflows](http://hortonworks.com/blog/four-step-strategy-incremental-updates-hive/)
-
-For NoSQL datastores like [Cassandra](http://cassandra.apache.org/) / [Voldemort](http://www.project-voldemort.com/voldemort/) / [HBase](https://hbase.apache.org/), even moderately big installations store billions of rows.
-It goes without saying that __full bulk loads are simply infeasible__ and more efficient approaches are needed if ingestion is to keep up with the typically high update volumes.
-
-Even for immutable data sources like [Kafka](kafka.apache.org) , Hudi helps __enforces a minimum file size on HDFS__, which improves NameNode health by solving one of the [age old problems in Hadoop land](https://blog.cloudera.com/blog/2009/02/the-small-files-problem/) in a holistic way. This is all the more important for event streams, since typically its higher volume (eg: click streams) and if not managed well, can cause serious damage to your Hadoop cluster.
-
-Across all sources, Hudi adds the much needed ability to atomically publish new data to consumers via notion of commits, shielding them from partial ingestion failures
-
-
-## Near Real-time Analytics
-
-Typically, real-time [datamarts](https://en.wikipedia.org/wiki/Data_mart) are powered by specialized analytical stores such as [Druid](http://druid.io/) or [Memsql](http://www.memsql.com/) or [even OpenTSDB](http://opentsdb.net/) .
-This is absolutely perfect for lower scale ([relative to Hadoop installations like this](https://blog.twitter.com/2015/hadoop-filesystem-at-twitter)) data, that needs sub-second query responses such as system monitoring or interactive real-time analysis.
-But, typically these systems end up getting abused for less interactive queries also since data on Hadoop is intolerably stale. This leads to under utilization & wasteful hardware/license costs.
-
-On the other hand, interactive SQL solutions on Hadoop such as Presto & SparkSQL excel in __queries that finish within few seconds__.
-By bringing __data freshness to a few minutes__, Hudi can provide a much efficient alternative, as well unlock real-time analytics on __several magnitudes larger datasets__ stored in DFS.
-Also, Hudi has no external dependencies (like a dedicated HBase cluster, purely used for real-time analytics) and thus enables faster analytics on much fresher analytics, without increasing the operational overhead.
-
-
-## Incremental Processing Pipelines
-
-One fundamental ability Hadoop provides is to build a chain of datasets derived from each other via DAGs expressed as workflows.
-Workflows often depend on new data being output by multiple upstream workflows and traditionally, availability of new data is indicated by a new DFS Folder/Hive Partition.
-Let's take a concrete example to illustrate this. An upstream workflow `U` can create a Hive partition for every hour, with data for that hour (event_time) at the end of each hour (processing_time), providing effective freshness of 1 hour.
-Then, a downstream workflow `D`, kicks off immediately after `U` finishes, and does its own processing for the next hour, increasing the effective latency to 2 hours.
-
-The above paradigm simply ignores late arriving data i.e when `processing_time` and `event_time` drift apart.
-Unfortunately, in today's post-mobile & pre-IoT world, __late data from intermittently connected mobile devices & sensors are the norm, not an anomaly__.
-In such cases, the only remedy to guarantee correctness is to [reprocess the last few hours](https://falcon.apache.org/FalconDocumentation.html#Handling_late_input_data) worth of data,
-over and over again each hour, which can significantly hurt the efficiency across the entire ecosystem. For e.g; imagine reprocessing TBs worth of data every hour across hundreds of workflows.
-
-Hudi comes to the rescue again, by providing a way to consume new data (including late data) from an upsteam Hudi dataset `HU` at a record granularity (not folders/partitions),
-apply the processing logic, and efficiently update/reconcile late data with a downstream Hudi dataset `HD`. Here, `HU` and `HD` can be continuously scheduled at a much more frequent schedule
-like 15 mins, and providing an end-end latency of 30 mins at `HD`.
-
-To achieve this, Hudi has embraced similar concepts from stream processing frameworks like [Spark Streaming](https://spark.apache.org/docs/latest/streaming-programming-guide.html#join-operations) , Pub/Sub systems like [Kafka](http://kafka.apache.org/documentation/#theconsumer)
-or database replication technologies like [Oracle XStream](https://docs.oracle.com/cd/E11882_01/server.112/e16545/xstrm_cncpt.htm#XSTRM187).
-For the more curious, a more detailed explanation of the benefits of Incremental Processing (compared to Stream Processing & Batch Processing) can be found [here](https://www.oreilly.com/ideas/ubers-case-for-incremental-processing-on-hadoop)
-
-
-## Data Dispersal From DFS
-
-A popular use-case for Hadoop, is to crunch data and then disperse it back to an online serving store, to be used by an application.
-For e.g, a Spark Pipeline can [determine hard braking events on Hadoop](https://eng.uber.com/telematics/) and load them into a serving store like ElasticSearch, to be used by the Uber application to increase safe driving. Typical architectures for this employ a `queue` between Hadoop and serving store, to prevent overwhelming the target serving store.
-A popular choice for this queue is Kafka and this model often results in __redundant storage of same data on DFS (for offline analysis on computed results) and Kafka (for dispersal)__
-
-Once again Hudi can efficiently solve this problem, by having the Spark Pipeline upsert output from
-each run into a Hudi dataset, which can then be incrementally tailed (just like a Kafka topic) for new data & written into the serving store.
diff --git a/docs-tmp/_docs/1_4_powered_by.md b/docs-tmp/_docs/1_4_powered_by.md
deleted file mode 100644
index 761876e..0000000
--- a/docs-tmp/_docs/1_4_powered_by.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: "Talks & Powered By"
-keywords: hudi, talks, presentation
-permalink: /docs/powered_by.html
-last_modified_at: 2019-12-31T15:59:57-04:00
----
-
-## Adoption
-
-### Uber
-
-Apache Hudi was originally developed at [Uber](https://uber.com), to achieve [low latency database ingestion, with high efficiency](http://www.slideshare.net/vinothchandar/hadoop-strata-talk-uber-your-hadoop-has-arrived/32).
-It has been in production since Aug 2016, powering the massive [100PB data lake](https://eng.uber.com/uber-big-data-platform/), including highly business critical tables like core trips,riders,partners. It also 
-powers several incremental Hive ETL pipelines and being currently integrated into Uber's data dispersal system.
-
-### Amazon Web Services
-Amazon Web Services is the World's leading cloud services provider. Apache Hudi is [pre-installed](https://aws.amazon.com/emr/features/hudi/) with the AWS Elastic Map Reduce 
-offering, providing means for AWS users to perform record-level updates/deletes and manage storage efficiently.
-
-### EMIS Health
-
-[EMIS Health](https://www.emishealth.com/) is the largest provider of Primary Care IT software in the UK with datasets including more than 500Bn healthcare records. HUDI is used to manage their analytics dataset in production and keeping them up-to-date with their upstream source. Presto is being used to query the data written in HUDI format.
-
-### Yields.io
-
-Yields.io is the first FinTech platform that uses AI for automated model validation and real-time monitoring on an enterprise-wide scale. Their data lake is managed by Hudi. They are also actively building their infrastructure for incremental, cross language/platform machine learning using Hudi.
-
-### Yotpo
-
-Using Hudi at Yotpo for several usages. Firstly, integrated Hudi as a writer in their open source ETL framework https://github.com/YotpoLtd/metorikku and using as an output writer for a CDC pipeline, with events that are being generated from a database binlog streams to Kafka and then are written to S3. 
- 
-### Tathastu.ai
-
-[Tathastu.ai](https://www.tathastu.ai) offers the largest AI/ML playground of consumer data for data scientists, AI experts and technologists to build upon. They have built a CDC pipeline using Apache Hudi and Debezium. Data from Hudi datasets is being queried using Hive, Presto and Spark.
-
-## Talks & Presentations
-
-1. ["Hoodie: Incremental processing on Hadoop at Uber"](https://conferences.oreilly.com/strata/strata-ca/public/schedule/detail/56511) -  By Vinoth Chandar & Prasanna Rajaperumal
-   Mar 2017, Strata + Hadoop World, San Jose, CA
-
-2. ["Hoodie: An Open Source Incremental Processing Framework From Uber"](http://www.dataengconf.com/hoodie-an-open-source-incremental-processing-framework-from-uber) - By Vinoth Chandar.
-   Apr 2017, DataEngConf, San Francisco, CA [Slides](https://www.slideshare.net/vinothchandar/hoodie-dataengconf-2017) [Video](https://www.youtube.com/watch?v=7Wudjc-v7CA)
-
-3. ["Incremental Processing on Large Analytical Datasets"](https://spark-summit.org/2017/events/incremental-processing-on-large-analytical-datasets/) - By Prasanna Rajaperumal
-   June 2017, Spark Summit 2017, San Francisco, CA. [Slides](https://www.slideshare.net/databricks/incremental-processing-on-large-analytical-datasets-with-prasanna-rajaperumal-and-vinoth-chandar) [Video](https://www.youtube.com/watch?v=3HS0lQX-cgo&feature=youtu.be)
-
-4. ["Hudi: Unifying storage and serving for batch and near-real-time analytics"](https://conferences.oreilly.com/strata/strata-ny/public/schedule/detail/70937) - By Nishith Agarwal & Balaji Vardarajan
-   September 2018, Strata Data Conference, New York, NY
-
-5. ["Hudi: Large-Scale, Near Real-Time Pipelines at Uber"](https://databricks.com/session/hudi-near-real-time-spark-pipelines-at-petabyte-scale) - By Vinoth Chandar & Nishith Agarwal
-   October 2018, Spark+AI Summit Europe, London, UK
-
-6. ["Powering Uber's global network analytics pipelines in real-time with Apache Hudi"](https://www.youtube.com/watch?v=1w3IpavhSWA) - By Ethan Guo & Nishith Agarwal, April 2019, Data Council SF19, San Francisco, CA.
-
-7. ["Building highly efficient data lakes using Apache Hudi (Incubating)"](https://www.slideshare.net/ChesterChen/sf-big-analytics-20190612-building-highly-efficient-data-lakes-using-apache-hudi) - By Vinoth Chandar 
-   June 2019, SF Big Analytics Meetup, San Mateo, CA
-
-8. ["Apache Hudi (Incubating) - The Past, Present and Future Of Efficient Data Lake Architectures"](https://docs.google.com/presentation/d/1FHhsvh70ZP6xXlHdVsAI0g__B_6Mpto5KQFlZ0b8-mM) - By Vinoth Chandar & Balaji Varadarajan
-   September 2019, ApacheCon NA 19, Las Vegas, NV, USA
-  
-9. ["Insert, upsert, and delete data in Amazon S3 using Amazon EMR"](https://www.portal.reinvent.awsevents.com/connect/sessionDetail.ww?SESSION_ID=98662&csrftkn=YS67-AG7B-QIAV-ZZBK-E6TT-MD4Q-1HEP-747P) - By Paul Codding & Vinoth Chandar
-   December 2019, AWS re:Invent 2019, Las Vegas, NV, USA  
-       
-10. ["Building Robust CDC Pipeline With Apache Hudi And Debezium"](https://www.slideshare.net/SyedKather/building-robust-cdc-pipeline-with-apache-hudi-and-debezium) - By Pratyaksh, Purushotham, Syed and Shaik December 2019, Hadoop Summit Bangalore, India
-
-## Articles
-
-1. ["The Case for incremental processing on Hadoop"](https://www.oreilly.com/ideas/ubers-case-for-incremental-processing-on-hadoop) - O'reilly Ideas article by Vinoth Chandar
-2. ["Hoodie: Uber Engineering's Incremental Processing Framework on Hadoop"](https://eng.uber.com/hoodie/) - Engineering Blog By Prasanna Rajaperumal
diff --git a/docs-tmp/_docs/1_5_comparison.md b/docs-tmp/_docs/1_5_comparison.md
deleted file mode 100644
index 3b7e739..0000000
--- a/docs-tmp/_docs/1_5_comparison.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: "Comparison"
-keywords: apache, hudi, kafka, kudu, hive, hbase, stream processing
-permalink: /docs/comparison.html
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-Apache Hudi fills a big void for processing data on top of DFS, and thus mostly co-exists nicely with these technologies. However,
-it would be useful to understand how Hudi fits into the current big data ecosystem, contrasting it with a few related systems
-and bring out the different tradeoffs these systems have accepted in their design.
-
-## Kudu
-
-[Apache Kudu](https://kudu.apache.org) is a storage system that has similar goals as Hudi, which is to bring real-time analytics on petabytes of data via first
-class support for `upserts`. A key differentiator is that Kudu also attempts to serve as a datastore for OLTP workloads, something that Hudi does not aspire to be.
-Consequently, Kudu does not support incremental pulling (as of early 2017), something Hudi does to enable incremental processing use cases.
-
-
-Kudu diverges from a distributed file system abstraction and HDFS altogether, with its own set of storage servers talking to each  other via RAFT.
-Hudi, on the other hand, is designed to work with an underlying Hadoop compatible filesystem (HDFS,S3 or Ceph) and does not have its own fleet of storage servers,
-instead relying on Apache Spark to do the heavy-lifting. Thu, Hudi can be scaled easily, just like other Spark jobs, while Kudu would require hardware
-& operational support, typical to datastores like HBase or Vertica. We have not at this point, done any head to head benchmarks against Kudu (given RTTable is WIP).
-But, if we were to go with results shared by [CERN](https://db-blog.web.cern.ch/blog/zbigniew-baranowski/2017-01-performance-comparison-different-file-formats-and-storage-engines) ,
-we expect Hudi to positioned at something that ingests parquet with superior performance.
-
-
-## Hive Transactions
-
-[Hive Transactions/ACID](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions) is another similar effort, which tries to implement storage like
-`merge-on-read`, on top of ORC file format. Understandably, this feature is heavily tied to Hive and other efforts like [LLAP](https://cwiki.apache.org/confluence/display/Hive/LLAP).
-Hive transactions does not offer the read-optimized storage option or the incremental pulling, that Hudi does. In terms of implementation choices, Hudi leverages
-the full power of a processing framework like Spark, while Hive transactions feature is implemented underneath by Hive tasks/queries kicked off by user or the Hive metastore.
-Based on our production experience, embedding Hudi as a library into existing Spark pipelines was much easier and less operationally heavy, compared with the other approach.
-Hudi is also designed to work with non-hive enginers like Presto/Spark and will incorporate file formats other than parquet over time.
-
-## HBase
-
-Even though [HBase](https://hbase.apache.org) is ultimately a key-value store for OLTP workloads, users often tend to associate HBase with analytics given the proximity to Hadoop.
-Given HBase is heavily write-optimized, it supports sub-second upserts out-of-box and Hive-on-HBase lets users query that data. However, in terms of actual performance for analytical workloads,
-hybrid columnar storage formats like Parquet/ORC handily beat HBase, since these workloads are predominantly read-heavy. Hudi bridges this gap between faster data and having
-analytical storage formats. From an operational perspective, arming users with a library that provides faster data, is more scalable, than managing a big farm of HBase region servers,
-just for analytics. Finally, HBase does not support incremental processing primitives like `commit times`, `incremental pull` as first class citizens like Hudi.
-
-## Stream Processing
-
-A popular question, we get is : "How does Hudi relate to stream processing systems?", which we will try to answer here. Simply put, Hudi can integrate with
-batch (`copy-on-write storage`) and streaming (`merge-on-read storage`) jobs of today, to store the computed results in Hadoop. For Spark apps, this can happen via direct
-integration of Hudi library with Spark/Spark streaming DAGs. In case of Non-Spark processing systems (eg: Flink, Hive), the processing can be done in the respective systems
-and later sent into a Hudi table via a Kafka topic/DFS intermediate file. In more conceptual level, data processing
-pipelines just consist of three components : `source`, `processing`, `sink`, with users ultimately running queries against the sink to use the results of the pipeline.
-Hudi can act as either a source or sink, that stores data on DFS. Applicability of Hudi to a given stream processing pipeline ultimately boils down to suitability
-of Presto/SparkSQL/Hive for your queries.
-
-More advanced use cases revolve around the concepts of [incremental processing](https://www.oreilly.com/ideas/ubers-case-for-incremental-processing-on-hadoop), which effectively
-uses Hudi even inside the `processing` engine to speed up typical batch pipelines. For e.g: Hudi can be used as a state store inside a processing DAG (similar
-to how [rocksDB](https://ci.apache.org/projects/flink/flink-docs-release-1.2/ops/state_backends.html#the-rocksdbstatebackend) is used by Flink). This is an item on the roadmap
-and will eventually happen as a [Beam Runner](https://issues.apache.org/jira/browse/HUDI-60)
diff --git a/docs-tmp/_docs/2_1_concepts.md b/docs-tmp/_docs/2_1_concepts.md
deleted file mode 100644
index 66205a2..0000000
--- a/docs-tmp/_docs/2_1_concepts.md
+++ /dev/null
@@ -1,171 +0,0 @@
----
-title: "Concepts"
-keywords: hudi, design, storage, views, timeline
-permalink: /docs/concepts.html
-summary: "Here we introduce some basic concepts & give a broad technical overview of Hudi"
-toc: true
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-Apache Hudi (pronounced “Hudi”) provides the following streaming primitives over datasets on DFS
-
- * Upsert                     (how do I change the dataset?)
- * Incremental pull           (how do I fetch data that changed?)
-
-In this section, we will discuss key concepts & terminologies that are important to understand, to be able to effectively use these primitives.
-
-## Timeline
-At its core, Hudi maintains a `timeline` of all actions performed on the dataset at different `instants` of time that helps provide instantaneous views of the dataset,
-while also efficiently supporting retrieval of data in the order of arrival. A Hudi instant consists of the following components 
-
- * `Action type` : Type of action performed on the dataset
- * `Instant time` : Instant time is typically a timestamp (e.g: 20190117010349), which monotonically increases in the order of action's begin time.
- * `state` : current state of the instant
- 
-Hudi guarantees that the actions performed on the timeline are atomic & timeline consistent based on the instant time.
-
-Key actions performed include
-
- * `COMMITS` - A commit denotes an **atomic write** of a batch of records into a dataset.
- * `CLEANS` - Background activity that gets rid of older versions of files in the dataset, that are no longer needed.
- * `DELTA_COMMIT` - A delta commit refers to an **atomic write** of a batch of records into a  MergeOnRead storage type of dataset, where some/all of the data could be just written to delta logs.
- * `COMPACTION` - Background activity to reconcile differential data structures within Hudi e.g: moving updates from row based log files to columnar formats. Internally, compaction manifests as a special commit on the timeline
- * `ROLLBACK` - Indicates that a commit/delta commit was unsuccessful & rolled back, removing any partial files produced during such a write
- * `SAVEPOINT` - Marks certain file groups as "saved", such that cleaner will not delete them. It helps restore the dataset to a point on the timeline, in case of disaster/data recovery scenarios.
-
-Any given instant can be 
-in one of the following states
-
- * `REQUESTED` - Denotes an action has been scheduled, but has not initiated
- * `INFLIGHT` - Denotes that the action is currently being performed
- * `COMPLETED` - Denotes completion of an action on the timeline
-
-<figure>
-    <img class="docimage" src="/assets/images/hudi_timeline.png" alt="hudi_timeline.png" />
-</figure>
-
-Example above shows upserts happenings between 10:00 and 10:20 on a Hudi dataset, roughly every 5 mins, leaving commit metadata on the Hudi timeline, along
-with other background cleaning/compactions. One key observation to make is that the commit time indicates the `arrival time` of the data (10:20AM), while the actual data
-organization reflects the actual time or `event time`, the data was intended for (hourly buckets from 07:00). These are two key concepts when reasoning about tradeoffs between latency and completeness of data.
-
-When there is late arriving data (data intended for 9:00 arriving >1 hr late at 10:20), we can see the upsert producing new data into even older time buckets/folders.
-With the help of the timeline, an incremental query attempting to get all new data that was committed successfully since 10:00 hours, is able to very efficiently consume
-only the changed files without say scanning all the time buckets > 07:00.
-
-## File management
-Hudi organizes a datasets into a directory structure under a `basepath` on DFS. Dataset is broken up into partitions, which are folders containing data files for that partition,
-very similar to Hive tables. Each partition is uniquely identified by its `partitionpath`, which is relative to the basepath.
-
-Within each partition, files are organized into `file groups`, uniquely identified by a `file id`. Each file group contains several
-`file slices`, where each slice contains a base columnar file (`*.parquet`) produced at a certain commit/compaction instant time,
- along with set of log files (`*.log.*`) that contain inserts/updates to the base file since the base file was produced. 
-Hudi adopts a MVCC design, where compaction action merges logs and base files to produce new file slices and cleaning action gets rid of 
-unused/older file slices to reclaim space on DFS. 
-
-Hudi provides efficient upserts, by mapping a given hoodie key (record key + partition path) consistently to a file group, via an indexing mechanism. 
-This mapping between record key and file group/file id, never changes once the first version of a record has been written to a file. In short, the 
-mapped file group contains all versions of a group of records.
-
-## Storage Types & Views
-Hudi storage types define how data is indexed & laid out on the DFS and how the above primitives and timeline activities are implemented on top of such organization (i.e how data is written). 
-In turn, `views` define how the underlying data is exposed to the queries (i.e how data is read). 
-
-| Storage Type  | Supported Views |
-|-------------- |------------------|
-| Copy On Write | Read Optimized + Incremental   |
-| Merge On Read | Read Optimized + Incremental + Near Real-time |
-
-### Storage Types
-Hudi supports the following storage types.
-
-  - [Copy On Write](#copy-on-write-storage) : Stores data using exclusively columnar file formats (e.g parquet). Updates simply version & rewrite the files by performing a synchronous merge during write.
-  - [Merge On Read](#merge-on-read-storage) : Stores data using a combination of columnar (e.g parquet) + row based (e.g avro) file formats. Updates are logged to delta files & later compacted to produce new versions of columnar files synchronously or asynchronously.
-    
-Following table summarizes the trade-offs between these two storage types
-
-| Trade-off | CopyOnWrite | MergeOnRead |
-|-------------- |------------------| ------------------|
-| Data Latency | Higher   | Lower |
-| Update cost (I/O) | Higher (rewrite entire parquet) | Lower (append to delta log) |
-| Parquet File Size | Smaller (high update(I/0) cost) | Larger (low update cost) |
-| Write Amplification | Higher | Lower (depending on compaction strategy) |
-
-
-### Views
-Hudi supports the following views of stored data
-
- - **Read Optimized View** : Queries on this view see the latest snapshot of the dataset as of a given commit or compaction action. 
-    This view exposes only the base/columnar files in latest file slices to the queries and guarantees the same columnar query performance compared to a non-hudi columnar dataset. 
- - **Incremental View** : Queries on this view only see new data written to the dataset, since a given commit/compaction. This view effectively provides change streams to enable incremental data pipelines. 
- - **Realtime View** : Queries on this view see the latest snapshot of dataset as of a given delta commit action. This view provides near-real time datasets (few mins)
-     by merging the base and delta files of the latest file slice on-the-fly.
-
-Following table summarizes the trade-offs between the different views.
-
-| Trade-off | ReadOptimized | RealTime |
-|-------------- |------------------| ------------------|
-| Data Latency | Higher   | Lower |
-| Query Latency | Lower (raw columnar performance) | Higher (merge columnar + row based delta) |
-
-
-## Copy On Write Storage
-
-File slices in Copy-On-Write storage only contain the base/columnar file and each commit produces new versions of base files. 
-In other words, we implicitly compact on every commit, such that only columnar data exists. As a result, the write amplification 
-(number of bytes written for 1 byte of incoming data) is much higher, where read amplification is zero. 
-This is a much desired property for analytical workloads, which is predominantly read-heavy.
-
-Following illustrates how this works conceptually, when  data written into copy-on-write storage  and two queries running on top of it.
-
-
-<figure>
-    <img class="docimage" src="/assets/images/hudi_cow.png" alt="hudi_cow.png" />
-</figure>
-
-
-As data gets written, updates to existing file groups produce a new slice for that file group stamped with the commit instant time, 
-while inserts allocate a new file group and write its first slice for that file group. These file slices and their commit instant times are color coded above.
-SQL queries running against such a dataset (eg: `select count(*)` counting the total records in that partition), first checks the timeline for the latest commit
-and filters all but latest file slices of each file group. As you can see, an old query does not see the current inflight commit's files color coded in pink,
-but a new query starting after the commit picks up the new data. Thus queries are immune to any write failures/partial writes and only run on committed data.
-
-The intention of copy on write storage, is to fundamentally improve how datasets are managed today through
-
-  - First class support for atomically updating data at file-level, instead of rewriting whole tables/partitions
-  - Ability to incremental consume changes, as opposed to wasteful scans or fumbling with heuristics
-  - Tight control file sizes to keep query performance excellent (small files hurt query performance considerably).
-
-
-## Merge On Read Storage
-
-Merge on read storage is a superset of copy on write, in the sense it still provides a read optimized view of the dataset via the Read Optmized table.
-Additionally, it stores incoming upserts for each file group, onto a row based delta log, that enables providing near real-time data to the queries
- by applying the delta log, onto the latest version of each file id on-the-fly during query time. Thus, this storage type attempts to balance read and write amplication intelligently, to provide near real-time queries.
-The most significant change here, would be to the compactor, which now carefully chooses which delta logs need to be compacted onto
-their columnar base file, to keep the query performance in check (larger delta logs would incur longer merge times with merge data on query side)
-
-Following illustrates how the storage works, and shows queries on both near-real time table and read optimized table.
-
-<figure>
-    <img class="docimage" src="/assets/images/hudi_mor.png" alt="hudi_mor.png" style="max-width: 100%" />
-</figure>
-
-There are lot of interesting things happening in this example, which bring out the subtleties in the approach.
-
- - We now have commits every 1 minute or so, something we could not do in the other storage type.
- - Within each file id group, now there is an delta log, which holds incoming updates to records in the base columnar files. In the example, the delta logs hold
- all the data from 10:05 to 10:10. The base columnar files are still versioned with the commit, as before.
- Thus, if one were to simply look at base files alone, then the storage layout looks exactly like a copy on write table.
- - A periodic compaction process reconciles these changes from the delta log and produces a new version of base file, just like what happened at 10:05 in the example.
- - There are two ways of querying the same underlying storage: ReadOptimized (RO) Table and Near-Realtime (RT) table, depending on whether we chose query performance or freshness of data.
- - The semantics around when data from a commit is available to a query changes in a subtle way for the RO table. Note, that such a query
- running at 10:10, wont see data after 10:05 above, while a query on the RT table always sees the freshest data.
- - When we trigger compaction & what it decides to compact hold all the key to solving these hard problems. By implementing a compacting
- strategy, where we aggressively compact the latest partitions compared to older partitions, we could ensure the RO Table sees data
- published within X minutes in a consistent fashion.
-
-The intention of merge on read storage is to enable near real-time processing directly on top of DFS, as opposed to copying
-data out to specialized systems, which may not be able to handle the data volume. There are also a few secondary side benefits to 
-this storage such as reduced write amplification by avoiding synchronous merge of data, i.e, the amount of data written per 1 bytes of data in a batch
-
-
diff --git a/docs-tmp/_docs/2_2_writing_data.md b/docs-tmp/_docs/2_2_writing_data.md
deleted file mode 100644
index e1f64c0..0000000
--- a/docs-tmp/_docs/2_2_writing_data.md
+++ /dev/null
@@ -1,222 +0,0 @@
----
-title: Writing Hudi Datasets
-keywords: hudi, incremental, batch, stream, processing, Hive, ETL, Spark SQL
-permalink: /docs/writing_data.html
-summary: In this page, we will discuss some available tools for incrementally ingesting & storing data.
-toc: true
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-In this section, we will cover ways to ingest new changes from external sources or even other Hudi datasets using the [DeltaStreamer](#deltastreamer) tool, as well as 
-speeding up large Spark jobs via upserts using the [Hudi datasource](#datasource-writer). Such datasets can then be [queried](querying_data.html) using various query engines.
-
-
-## Write Operations
-
-Before that, it may be helpful to understand the 3 different write operations provided by Hudi datasource or the delta streamer tool and how best to leverage them. These operations
-can be chosen/changed across each commit/deltacommit issued against the dataset.
-
-
- - **UPSERT** : This is the default operation where the input records are first tagged as inserts or updates by looking up the index and 
- the records are ultimately written after heuristics are run to determine how best to pack them on storage to optimize for things like file sizing. 
- This operation is recommended for use-cases like database change capture where the input almost certainly contains updates.
- - **INSERT** : This operation is very similar to upsert in terms of heuristics/file sizing but completely skips the index lookup step. Thus, it can be a lot faster than upserts 
- for use-cases like log de-duplication (in conjunction with options to filter duplicates mentioned below). This is also suitable for use-cases where the dataset can tolerate duplicates, but just 
- need the transactional writes/incremental pull/storage management capabilities of Hudi.
- - **BULK_INSERT** : Both upsert and insert operations keep input records in memory to speed up storage heuristics computations faster (among other things) and thus can be cumbersome for 
- initial loading/bootstrapping a Hudi dataset at first. Bulk insert provides the same semantics as insert, while implementing a sort-based data writing algorithm, which can scale very well for several hundred TBs 
- of initial load. However, this just does a best-effort job at sizing files vs guaranteeing file sizes like inserts/upserts do. 
-
-
-## DeltaStreamer
-
-The `HoodieDeltaStreamer` utility (part of hudi-utilities-bundle) provides the way to ingest from different sources such as DFS or Kafka, with the following capabilities.
-
- - Exactly once ingestion of new events from Kafka, [incremental imports](https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_incremental_imports) from Sqoop or output of `HiveIncrementalPuller` or files under a DFS folder
- - Support json, avro or a custom record types for the incoming data
- - Manage checkpoints, rollback & recovery 
- - Leverage Avro schemas from DFS or Confluent [schema registry](https://github.com/confluentinc/schema-registry).
- - Support for plugging in transformations
-
-Command line options describe capabilities in more detail
-
-```java
-[hoodie]$ spark-submit --class org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer `ls packaging/hudi-utilities-bundle/target/hudi-utilities-bundle-*.jar` --help
-Usage: <main class> [options]
-  Options:
-    --commit-on-errors
-        Commit even when some records failed to be written
-      Default: false
-    --enable-hive-sync
-          Enable syncing to hive
-       Default: false
-    --filter-dupes
-          Should duplicate records from source be dropped/filtered outbefore 
-          insert/bulk-insert 
-      Default: false
-    --help, -h
-    --hudi-conf
-          Any configuration that can be set in the properties file (using the CLI 
-          parameter "--propsFilePath") can also be passed command line using this 
-          parameter 
-          Default: []
-    --op
-      Takes one of these values : UPSERT (default), INSERT (use when input is
-      purely new data/inserts to gain speed)
-      Default: UPSERT
-      Possible Values: [UPSERT, INSERT, BULK_INSERT]
-    --payload-class
-      subclass of HoodieRecordPayload, that works off a GenericRecord.
-      Implement your own, if you want to do something other than overwriting
-      existing value
-      Default: org.apache.hudi.OverwriteWithLatestAvroPayload
-    --props
-      path to properties file on localfs or dfs, with configurations for
-      Hudi client, schema provider, key generator and data source. For
-      Hudi client props, sane defaults are used, but recommend use to
-      provide basic things like metrics endpoints, hive configs etc. For
-      sources, referto individual classes, for supported properties.
-      Default: file:///Users/vinoth/bin/hoodie/src/test/resources/delta-streamer-config/dfs-source.properties
-    --schemaprovider-class
-      subclass of org.apache.hudi.utilities.schema.SchemaProvider to attach
-      schemas to input & target table data, built in options:
-      FilebasedSchemaProvider
-      Default: org.apache.hudi.utilities.schema.FilebasedSchemaProvider
-    --source-class
-      Subclass of org.apache.hudi.utilities.sources to read data. Built-in
-      options: org.apache.hudi.utilities.sources.{JsonDFSSource (default),
-      AvroDFSSource, JsonKafkaSource, AvroKafkaSource, HiveIncrPullSource}
-      Default: org.apache.hudi.utilities.sources.JsonDFSSource
-    --source-limit
-      Maximum amount of data to read from source. Default: No limit For e.g:
-      DFSSource => max bytes to read, KafkaSource => max events to read
-      Default: 9223372036854775807
-    --source-ordering-field
-      Field within source record to decide how to break ties between records
-      with same key in input data. Default: 'ts' holding unix timestamp of
-      record
-      Default: ts
-    --spark-master
-      spark master to use.
-      Default: local[2]
-  * --target-base-path
-      base path for the target Hudi dataset. (Will be created if did not
-      exist first time around. If exists, expected to be a Hudi dataset)
-  * --target-table
-      name of the target table in Hive
-    --transformer-class
-      subclass of org.apache.hudi.utilities.transform.Transformer. UDF to
-      transform raw source dataset to a target dataset (conforming to target
-      schema) before writing. Default : Not set. E:g -
-      org.apache.hudi.utilities.transform.SqlQueryBasedTransformer (which
-      allows a SQL query template to be passed as a transformation function)
-```
-
-The tool takes a hierarchically composed property file and has pluggable interfaces for extracting data, key generation and providing schema. Sample configs for ingesting from kafka and dfs are
-provided under `hudi-utilities/src/test/resources/delta-streamer-config`.
-
-For e.g: once you have Confluent Kafka, Schema registry up & running, produce some test data using ([impressions.avro](https://docs.confluent.io/current/ksql/docs/tutorials/generate-custom-test-data.html) provided by schema-registry repo)
-
-```java
-[confluent-5.0.0]$ bin/ksql-datagen schema=../impressions.avro format=avro topic=impressions key=impressionid
-```
-
-and then ingest it as follows.
-
-```java
-[hoodie]$ spark-submit --class org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer `ls packaging/hudi-utilities-bundle/target/hudi-utilities-bundle-*.jar` \
-  --props file://${PWD}/hudi-utilities/src/test/resources/delta-streamer-config/kafka-source.properties \
-  --schemaprovider-class org.apache.hudi.utilities.schema.SchemaRegistryProvider \
-  --source-class org.apache.hudi.utilities.sources.AvroKafkaSource \
-  --source-ordering-field impresssiontime \
-  --target-base-path file:///tmp/hudi-deltastreamer-op --target-table uber.impressions \
-  --op BULK_INSERT
-```
-
-In some cases, you may want to migrate your existing dataset into Hudi beforehand. Please refer to [migration guide](/docs/migration_guide.html). 
-
-## Datasource Writer
-
-The `hudi-spark` module offers the DataSource API to write (and also read) any data frame into a Hudi dataset.
-Following is how we can upsert a dataframe, while specifying the field names that need to be used
-for `recordKey => _row_key`, `partitionPath => partition` and `precombineKey => timestamp`
-
-
-```java
-inputDF.write()
-       .format("org.apache.hudi")
-       .options(clientOpts) // any of the Hudi client opts can be passed in as well
-       .option(DataSourceWriteOptions.RECORDKEY_FIELD_OPT_KEY(), "_row_key")
-       .option(DataSourceWriteOptions.PARTITIONPATH_FIELD_OPT_KEY(), "partition")
-       .option(DataSourceWriteOptions.PRECOMBINE_FIELD_OPT_KEY(), "timestamp")
-       .option(HoodieWriteConfig.TABLE_NAME, tableName)
-       .mode(SaveMode.Append)
-       .save(basePath);
-```
-
-## Syncing to Hive
-
-Both tools above support syncing of the dataset's latest schema to Hive metastore, such that queries can pick up new columns and partitions.
-In case, its preferable to run this from commandline or in an independent jvm, Hudi provides a `HiveSyncTool`, which can be invoked as below, 
-once you have built the hudi-hive module.
-
-```java
-cd hudi-hive
-./run_sync_tool.sh
- [hudi-hive]$ ./run_sync_tool.sh --help
-Usage: <main class> [options]
-  Options:
-  * --base-path
-       Basepath of Hudi dataset to sync
-  * --database
-       name of the target database in Hive
-    --help, -h
-       Default: false
-  * --jdbc-url
-       Hive jdbc connect url
-  * --use-jdbc
-       Whether to use jdbc connection or hive metastore (via thrift)
-  * --pass
-       Hive password
-  * --table
-       name of the target table in Hive
-  * --user
-       Hive username
-```
-
-## Deletes 
-
-Hudi supports implementing two types of deletes on data stored in Hudi datasets, by enabling the user to specify a different record payload implementation. 
-
- - **Soft Deletes** : With soft deletes, user wants to retain the key but just null out the values for all other fields. 
- This can be simply achieved by ensuring the appropriate fields are nullable in the dataset schema and simply upserting the dataset after setting these fields to null.
- - **Hard Deletes** : A stronger form of delete is to physically remove any trace of the record from the dataset. This can be achieved by issuing an upsert with a custom payload implementation
- via either DataSource or DeltaStreamer which always returns Optional.Empty as the combined value. Hudi ships with a built-in `org.apache.hudi.EmptyHoodieRecordPayload` class that does exactly this.
- 
-```java
- deleteDF // dataframe containing just records to be deleted
-   .write().format("org.apache.hudi")
-   .option(...) // Add HUDI options like record-key, partition-path and others as needed for your setup
-   // specify record_key, partition_key, precombine_fieldkey & usual params
-   .option(DataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEY, "org.apache.hudi.EmptyHoodieRecordPayload")
- 
-```
-
-
-## Storage Management
-
-Hudi also performs several key storage management functions on the data stored in a Hudi dataset. A key aspect of storing data on DFS is managing file sizes and counts
-and reclaiming storage space. For e.g HDFS is infamous for its handling of small files, which exerts memory/RPC pressure on the Name Node and can potentially destabilize
-the entire cluster. In general, query engines provide much better performance on adequately sized columnar files, since they can effectively amortize cost of obtaining 
-column statistics etc. Even on some cloud data stores, there is often cost to listing directories with large number of small files.
-
-Here are some ways to efficiently manage the storage of your Hudi datasets.
-
- - The [small file handling feature](configurations.html#compactionSmallFileSize) in Hudi, profiles incoming workload 
-   and distributes inserts to existing file groups instead of creating new file groups, which can lead to small files. 
- - Cleaner can be [configured](configurations.html#retainCommits) to clean up older file slices, more or less aggressively depending on maximum time for queries to run & lookback needed for incremental pull
- - User can also tune the size of the [base/parquet file](configurations.html#limitFileSize), [log files](configurations.html#logFileMaxSize) & expected [compression ratio](configurations.html#parquetCompressionRatio), 
-   such that sufficient number of inserts are grouped into the same file group, resulting in well sized base files ultimately.
- - Intelligently tuning the [bulk insert parallelism](configurations.html#withBulkInsertParallelism), can again in nicely sized initial file groups. It is in fact critical to get this right, since the file groups
-   once created cannot be deleted, but simply expanded as explained before.
- - For workloads with heavy updates, the [merge-on-read storage](concepts.html#merge-on-read-storage) provides a nice mechanism for ingesting quickly into smaller files and then later merging them into larger base files via compaction.
diff --git a/docs-tmp/_docs/2_3_querying_data.md b/docs-tmp/_docs/2_3_querying_data.md
deleted file mode 100644
index b3b2c82..0000000
--- a/docs-tmp/_docs/2_3_querying_data.md
+++ /dev/null
@@ -1,144 +0,0 @@
----
-title: Querying Hudi Datasets
-keywords: hudi, hive, spark, sql, presto
-permalink: /docs/querying_data.html
-summary: In this page, we go over how to enable SQL queries on Hudi built tables.
-toc: true
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-Conceptually, Hudi stores data physically once on DFS, while providing 3 logical views on top, as explained [before](concepts.html#views). 
-Once the dataset is synced to the Hive metastore, it provides external Hive tables backed by Hudi's custom inputformats. Once the proper hudi
-bundle has been provided, the dataset can be queried by popular query engines like Hive, Spark and Presto.
-
-Specifically, there are two Hive tables named off [table name](configurations.html#TABLE_NAME_OPT_KEY) passed during write. 
-For e.g, if `table name = hudi_tbl`, then we get  
-
- - `hudi_tbl` realizes the read optimized view of the dataset backed by `HoodieParquetInputFormat`, exposing purely columnar data.
- - `hudi_tbl_rt` realizes the real time view of the dataset  backed by `HoodieParquetRealtimeInputFormat`, exposing merged view of base and log data.
-
-As discussed in the concepts section, the one key primitive needed for [incrementally processing](https://www.oreilly.com/ideas/ubers-case-for-incremental-processing-on-hadoop),
-is `incremental pulls` (to obtain a change stream/log from a dataset). Hudi datasets can be pulled incrementally, which means you can get ALL and ONLY the updated & new rows 
-since a specified instant time. This, together with upserts, are particularly useful for building data pipelines where 1 or more source Hudi tables are incrementally pulled (streams/facts),
-joined with other tables (datasets/dimensions), to [write out deltas](writing_data.html) to a target Hudi dataset. Incremental view is realized by querying one of the tables above, 
-with special configurations that indicates to query planning that only incremental data needs to be fetched out of the dataset. 
-
-In sections, below we will discuss in detail how to access all the 3 views on each query engine.
-
-## Hive
-
-In order for Hive to recognize Hudi datasets and query correctly, the HiveServer2 needs to be provided with the `hudi-hadoop-mr-bundle-x.y.z-SNAPSHOT.jar` 
-in its [aux jars path](https://www.cloudera.com/documentation/enterprise/5-6-x/topics/cm_mc_hive_udf.html#concept_nc3_mms_lr). This will ensure the input format 
-classes with its dependencies are available for query planning & execution. 
-
-### Read Optimized table
-In addition to setup above, for beeline cli access, the `hive.input.format` variable needs to be set to the  fully qualified path name of the 
-inputformat `org.apache.hudi.hadoop.HoodieParquetInputFormat`. For Tez, additionally the `hive.tez.input.format` needs to be set 
-to `org.apache.hadoop.hive.ql.io.HiveInputFormat`
-
-### Real time table
-In addition to installing the hive bundle jar on the HiveServer2, it needs to be put on the hadoop/hive installation across the cluster, so that
-queries can pick up the custom RecordReader as well.
-
-### Incremental Pulling
-
-`HiveIncrementalPuller` allows incrementally extracting changes from large fact/dimension tables via HiveQL, combining the benefits of Hive (reliably process complex SQL queries) and 
-incremental primitives (speed up query by pulling tables incrementally instead of scanning fully). The tool uses Hive JDBC to run the hive query and saves its results in a temp table.
-that can later be upserted. Upsert utility (`HoodieDeltaStreamer`) has all the state it needs from the directory structure to know what should be the commit time on the target table.
-e.g: `/app/incremental-hql/intermediate/{source_table_name}_temp/{last_commit_included}`.The Delta Hive table registered will be of the form `{tmpdb}.{source_table}_{last_commit_included}`.
-
-The following are the configuration options for HiveIncrementalPuller
-
-| **Config** | **Description** | **Default** |
-|hiveUrl| Hive Server 2 URL to connect to |  |
-|hiveUser| Hive Server 2 Username |  |
-|hivePass| Hive Server 2 Password |  |
-|queue| YARN Queue name |  |
-|tmp| Directory where the temporary delta data is stored in DFS. The directory structure will follow conventions. Please see the below section.  |  |
-|extractSQLFile| The SQL to execute on the source table to extract the data. The data extracted will be all the rows that changed since a particular point in time. |  |
-|sourceTable| Source Table Name. Needed to set hive environment properties. |  |
-|targetTable| Target Table Name. Needed for the intermediate storage directory structure.  |  |
-|sourceDataPath| Source DFS Base Path. This is where the Hudi metadata will be read. |  |
-|targetDataPath| Target DFS Base path. This is needed to compute the fromCommitTime. This is not needed if fromCommitTime is specified explicitly. |  |
-|tmpdb| The database to which the intermediate temp delta table will be created | hoodie_temp |
-|fromCommitTime| This is the most important parameter. This is the point in time from which the changed records are pulled from.  |  |
-|maxCommits| Number of commits to include in the pull. Setting this to -1 will include all the commits from fromCommitTime. Setting this to a value > 0, will include records that ONLY changed in the specified number of commits after fromCommitTime. This may be needed if you need to catch up say 2 commits at a time. | 3 |
-|help| Utility Help |  |
-
-
-Setting fromCommitTime=0 and maxCommits=-1 will pull in the entire source dataset and can be used to initiate backfills. If the target dataset is a Hudi dataset,
-then the utility can determine if the target dataset has no commits or is behind more than 24 hour (this is configurable),
-it will automatically use the backfill configuration, since applying the last 24 hours incrementally could take more time than doing a backfill. The current limitation of the tool
-is the lack of support for self-joining the same table in mixed mode (normal and incremental modes).
-
-**NOTE on Hive queries that are executed using Fetch task:**
-Since Fetch tasks invoke InputFormat.listStatus() per partition, Hoodie metadata can be listed in
-every such listStatus() call. In order to avoid this, it might be useful to disable fetch tasks
-using the hive session property for incremental queries: `set hive.fetch.task.conversion=none;` This
-would ensure Map Reduce execution is chosen for a Hive query, which combines partitions (comma
-separated) and calls InputFormat.listStatus() only once with all those partitions.
-
-## Spark
-
-Spark provides much easier deployment & management of Hudi jars and bundles into jobs/notebooks. At a high level, there are two ways to access Hudi datasets in Spark.
-
- - **Hudi DataSource** : Supports Read Optimized, Incremental Pulls similar to how standard datasources (e.g: `spark.read.parquet`) work.
- - **Read as Hive tables** : Supports all three views, including the real time view, relying on the custom Hudi input formats again like Hive.
- 
- In general, your spark job needs a dependency to `hudi-spark` or `hudi-spark-bundle-x.y.z.jar` needs to be on the class path of driver & executors (hint: use `--jars` argument)
- 
-### Read Optimized table
-
-To read RO table as a Hive table using SparkSQL, simply push a path filter into sparkContext as follows. 
-This method retains Spark built-in optimizations for reading Parquet files like vectorized reading on Hudi tables.
-
-```scala
-spark.sparkContext.hadoopConfiguration.setClass("mapreduce.input.pathFilter.class", classOf[org.apache.hudi.hadoop.HoodieROTablePathFilter], classOf[org.apache.hadoop.fs.PathFilter]);
-```
-
-If you prefer to glob paths on DFS via the datasource, you can simply do something like below to get a Spark dataframe to work with. 
-
-```java
-Dataset<Row> hoodieROViewDF = spark.read().format("org.apache.hudi")
-// pass any path glob, can include hudi & non-hudi datasets
-.load("/glob/path/pattern");
-```
- 
-### Real time table {#spark-rt-view}
-Currently, real time table can only be queried as a Hive table in Spark. In order to do this, set `spark.sql.hive.convertMetastoreParquet=false`, forcing Spark to fallback 
-to using the Hive Serde to read the data (planning/executions is still Spark). 
-
-```java
-$ spark-shell --jars hudi-spark-bundle-x.y.z-SNAPSHOT.jar --driver-class-path /etc/hive/conf  --packages com.databricks:spark-avro_2.11:4.0.0 --conf spark.sql.hive.convertMetastoreParquet=false --num-executors 10 --driver-memory 7g --executor-memory 2g  --master yarn-client
-
-scala> sqlContext.sql("select count(*) from hudi_rt where datestr = '2016-10-02'").show()
-```
-
-### Incremental Pulling {#spark-incr-pull}
-The `hudi-spark` module offers the DataSource API, a more elegant way to pull data from Hudi dataset and process it via Spark.
-A sample incremental pull, that will obtain all records written since `beginInstantTime`, looks like below.
-
-```java
- Dataset<Row> hoodieIncViewDF = spark.read()
-     .format("org.apache.hudi")
-     .option(DataSourceReadOptions.VIEW_TYPE_OPT_KEY(),
-             DataSourceReadOptions.VIEW_TYPE_INCREMENTAL_OPT_VAL())
-     .option(DataSourceReadOptions.BEGIN_INSTANTTIME_OPT_KEY(),
-            <beginInstantTime>)
-     .load(tablePath); // For incremental view, pass in the root/base path of dataset
-```
-
-Please refer to [configurations](configurations.html#spark-datasource) section, to view all datasource options.
-
-Additionally, `HoodieReadClient` offers the following functionality using Hudi's implicit indexing.
-
-| **API** | **Description** |
-| read(keys) | Read out the data corresponding to the keys as a DataFrame, using Hudi's own index for faster lookup |
-| filterExists() | Filter out already existing records from the provided RDD[HoodieRecord]. Useful for de-duplication |
-| checkExists(keys) | Check if the provided keys exist in a Hudi dataset |
-
-
-## Presto
-
-Presto is a popular query engine, providing interactive query performance. Hudi RO tables can be queries seamlessly in Presto. 
-This requires the `hudi-presto-bundle` jar to be placed into `<presto_install>/plugin/hive-hadoop2/`, across the installation.
diff --git a/docs-tmp/_docs/2_4_configurations.md b/docs-tmp/_docs/2_4_configurations.md
deleted file mode 100644
index b5f2160..0000000
--- a/docs-tmp/_docs/2_4_configurations.md
+++ /dev/null
@@ -1,436 +0,0 @@
----
-title: Configurations
-keywords: garbage collection, hudi, jvm, configs, tuning
-permalink: /docs/configurations.html
-summary: "Here we list all possible configurations and what they mean"
-toc: true
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-This page covers the different ways of configuring your job to write/read Hudi datasets. 
-At a high level, you can control behaviour at few levels. 
-
-- **[Spark Datasource Configs](#spark-datasource)** : These configs control the Hudi Spark Datasource, providing ability to define keys/partitioning, pick out the write operation, specify how to merge records or choosing view type to read.
-- **[WriteClient Configs](#writeclient-configs)** : Internally, the Hudi datasource uses a RDD based `HoodieWriteClient` api to actually perform writes to storage. These configs provide deep control over lower level aspects like 
-   file sizing, compression, parallelism, compaction, write schema, cleaning etc. Although Hudi provides sane defaults, from time-time these configs may need to be tweaked to optimize for specific workloads.
-- **[RecordPayload Config](#PAYLOAD_CLASS_OPT_KEY)** : This is the lowest level of customization offered by Hudi. Record payloads define how to produce new values to upsert based on incoming new record and 
-   stored old record. Hudi provides default implementations such as `OverwriteWithLatestAvroPayload` which simply update storage with the latest/last-written record. 
-   This can be overridden to a custom class extending `HoodieRecordPayload` class, on both datasource and WriteClient levels.
- 
-### Talking to Cloud Storage
-
-Immaterial of whether RDD/WriteClient APIs or Datasource is used, the following information helps configure access
-to cloud stores.
-
- * [AWS S3](/newsite-content/docs/s3_hoodie) <br/>
-   Configurations required for S3 and Hudi co-operability.
- * [Google Cloud Storage](/newsite-content/docs/gcs_hoodie) <br/>
-   Configurations required for GCS and Hudi co-operability.
-
-### Spark Datasource Configs {#spark-datasource}
-
-Spark jobs using the datasource can be configured by passing the below options into the `option(k,v)` method as usual.
-The actual datasource level configs are listed below.
-
-
-
-
-
-#### Write Options
-
-Additionally, you can pass down any of the WriteClient level configs directly using `options()` or `option(k,v)` methods.
-
-```java
-inputDF.write()
-.format("org.apache.hudi")
-.options(clientOpts) // any of the Hudi client opts can be passed in as well
-.option(DataSourceWriteOptions.RECORDKEY_FIELD_OPT_KEY(), "_row_key")
-.option(DataSourceWriteOptions.PARTITIONPATH_FIELD_OPT_KEY(), "partition")
-.option(DataSourceWriteOptions.PRECOMBINE_FIELD_OPT_KEY(), "timestamp")
-.option(HoodieWriteConfig.TABLE_NAME, tableName)
-.mode(SaveMode.Append)
-.save(basePath);
-```
-
-Options useful for writing datasets via `write.format.option(...)`
-
-##### TABLE_NAME_OPT_KEY {#TABLE_NAME_OPT_KEY}
-  Property: `hoodie.datasource.write.table.name` [Required]<br/>
-  <span style="color:grey">Hive table name, to register the dataset into.</span>
-  
-##### OPERATION_OPT_KEY {#OPERATION_OPT_KEY}
-  Property: `hoodie.datasource.write.operation`, Default: `upsert`<br/>
-  <span style="color:grey">whether to do upsert, insert or bulkinsert for the write operation. Use `bulkinsert` to load new data into a table, and there on use `upsert`/`insert`. 
-  bulk insert uses a disk based write path to scale to load large inputs without need to cache it.</span>
-  
-##### STORAGE_TYPE_OPT_KEY {#STORAGE_TYPE_OPT_KEY}
-  Property: `hoodie.datasource.write.storage.type`, Default: `COPY_ON_WRITE` <br/>
-  <span style="color:grey">The storage type for the underlying data, for this write. This can't change between writes.</span>
-  
-##### PRECOMBINE_FIELD_OPT_KEY {#PRECOMBINE_FIELD_OPT_KEY}
-  Property: `hoodie.datasource.write.precombine.field`, Default: `ts` <br/>
-  <span style="color:grey">Field used in preCombining before actual write. When two records have the same key value,
-we will pick the one with the largest value for the precombine field, determined by Object.compareTo(..)</span>
-
-##### PAYLOAD_CLASS_OPT_KEY {#PAYLOAD_CLASS_OPT_KEY}
-  Property: `hoodie.datasource.write.payload.class`, Default: `org.apache.hudi.OverwriteWithLatestAvroPayload` <br/>
-  <span style="color:grey">Payload class used. Override this, if you like to roll your own merge logic, when upserting/inserting. 
-  This will render any value set for `PRECOMBINE_FIELD_OPT_VAL` in-effective</span>
-  
-##### RECORDKEY_FIELD_OPT_KEY {#RECORDKEY_FIELD_OPT_KEY}
-  Property: `hoodie.datasource.write.recordkey.field`, Default: `uuid` <br/>
-  <span style="color:grey">Record key field. Value to be used as the `recordKey` component of `HoodieKey`. Actual value
-will be obtained by invoking .toString() on the field value. Nested fields can be specified using
-the dot notation eg: `a.b.c`</span>
-
-##### PARTITIONPATH_FIELD_OPT_KEY {#PARTITIONPATH_FIELD_OPT_KEY}
-  Property: `hoodie.datasource.write.partitionpath.field`, Default: `partitionpath` <br/>
-  <span style="color:grey">Partition path field. Value to be used at the `partitionPath` component of `HoodieKey`.
-Actual value ontained by invoking .toString()</span>
-
-##### KEYGENERATOR_CLASS_OPT_KEY {#KEYGENERATOR_CLASS_OPT_KEY}
-  Property: `hoodie.datasource.write.keygenerator.class`, Default: `org.apache.hudi.SimpleKeyGenerator` <br/>
-  <span style="color:grey">Key generator class, that implements will extract the key out of incoming `Row` object</span>
-  
-##### COMMIT_METADATA_KEYPREFIX_OPT_KEY {#COMMIT_METADATA_KEYPREFIX_OPT_KEY}
-  Property: `hoodie.datasource.write.commitmeta.key.prefix`, Default: `_` <br/>
-  <span style="color:grey">Option keys beginning with this prefix, are automatically added to the commit/deltacommit metadata.
-This is useful to store checkpointing information, in a consistent way with the hudi timeline</span>
-
-##### INSERT_DROP_DUPS_OPT_KEY {#INSERT_DROP_DUPS_OPT_KEY}
-  Property: `hoodie.datasource.write.insert.drop.duplicates`, Default: `false` <br/>
-  <span style="color:grey">If set to true, filters out all duplicate records from incoming dataframe, during insert operations. </span>
-  
-##### HIVE_SYNC_ENABLED_OPT_KEY {#HIVE_SYNC_ENABLED_OPT_KEY}
-  Property: `hoodie.datasource.hive_sync.enable`, Default: `false` <br/>
-  <span style="color:grey">When set to true, register/sync the dataset to Apache Hive metastore</span>
-  
-##### HIVE_DATABASE_OPT_KEY {#HIVE_DATABASE_OPT_KEY}
-  Property: `hoodie.datasource.hive_sync.database`, Default: `default` <br/>
-  <span style="color:grey">database to sync to</span>
-  
-##### HIVE_TABLE_OPT_KEY {#HIVE_TABLE_OPT_KEY}
-  Property: `hoodie.datasource.hive_sync.table`, [Required] <br/>
-  <span style="color:grey">table to sync to</span>
-  
-##### HIVE_USER_OPT_KEY {#HIVE_USER_OPT_KEY}
-  Property: `hoodie.datasource.hive_sync.username`, Default: `hive` <br/>
-  <span style="color:grey">hive user name to use</span>
-  
-##### HIVE_PASS_OPT_KEY {#HIVE_PASS_OPT_KEY}
-  Property: `hoodie.datasource.hive_sync.password`, Default: `hive` <br/>
-  <span style="color:grey">hive password to use</span>
-  
-##### HIVE_URL_OPT_KEY {#HIVE_URL_OPT_KEY}
-  Property: `hoodie.datasource.hive_sync.jdbcurl`, Default: `jdbc:hive2://localhost:10000` <br/>
-  <span style="color:grey">Hive metastore url</span>
-  
-##### HIVE_PARTITION_FIELDS_OPT_KEY {#HIVE_PARTITION_FIELDS_OPT_KEY}
-  Property: `hoodie.datasource.hive_sync.partition_fields`, Default: ` ` <br/>
-  <span style="color:grey">field in the dataset to use for determining hive partition columns.</span>
-  
-##### HIVE_PARTITION_EXTRACTOR_CLASS_OPT_KEY {#HIVE_PARTITION_EXTRACTOR_CLASS_OPT_KEY}
-  Property: `hoodie.datasource.hive_sync.partition_extractor_class`, Default: `org.apache.hudi.hive.SlashEncodedDayPartitionValueExtractor` <br/>
-  <span style="color:grey">Class used to extract partition field values into hive partition columns.</span>
-  
-##### HIVE_ASSUME_DATE_PARTITION_OPT_KEY {#HIVE_ASSUME_DATE_PARTITION_OPT_KEY}
-  Property: `hoodie.datasource.hive_sync.assume_date_partitioning`, Default: `false` <br/>
-  <span style="color:grey">Assume partitioning is yyyy/mm/dd</span>
-
-#### Read Options
-
-Options useful for reading datasets via `read.format.option(...)`
-
-##### VIEW_TYPE_OPT_KEY {#VIEW_TYPE_OPT_KEY}
-Property: `hoodie.datasource.view.type`, Default: `read_optimized` <br/>
-<span style="color:grey">Whether data needs to be read, in incremental mode (new data since an instantTime)
-(or) Read Optimized mode (obtain latest view, based on columnar data)
-(or) Real time mode (obtain latest view, based on row & columnar data)</span>
-
-##### BEGIN_INSTANTTIME_OPT_KEY {#BEGIN_INSTANTTIME_OPT_KEY} 
-Property: `hoodie.datasource.read.begin.instanttime`, [Required in incremental mode] <br/>
-<span style="color:grey">Instant time to start incrementally pulling data from. The instanttime here need not
-necessarily correspond to an instant on the timeline. New data written with an
- `instant_time > BEGIN_INSTANTTIME` are fetched out. For e.g: '20170901080000' will get
- all new data written after Sep 1, 2017 08:00AM.</span>
- 
-##### END_INSTANTTIME_OPT_KEY {#END_INSTANTTIME_OPT_KEY}
-Property: `hoodie.datasource.read.end.instanttime`, Default: latest instant (i.e fetches all new data since begin instant time) <br/>
-<span style="color:grey"> Instant time to limit incrementally fetched data to. New data written with an
-`instant_time <= END_INSTANTTIME` are fetched out.</span>
-
-
-### WriteClient Configs {#writeclient-configs}
-
-Jobs programming directly against the RDD level apis can build a `HoodieWriteConfig` object and pass it in to the `HoodieWriteClient` constructor. 
-HoodieWriteConfig can be built using a builder pattern as below. 
-
-```java
-HoodieWriteConfig cfg = HoodieWriteConfig.newBuilder()
-        .withPath(basePath)
-        .forTable(tableName)
-        .withSchema(schemaStr)
-        .withProps(props) // pass raw k,v pairs from a property file.
-        .withCompactionConfig(HoodieCompactionConfig.newBuilder().withXXX(...).build())
-        .withIndexConfig(HoodieIndexConfig.newBuilder().withXXX(...).build())
-        ...
-        .build();
-```
-
-Following subsections go over different aspects of write configs, explaining most important configs with their property names, default values.
-
-##### withPath(hoodie_base_path) {#withPath}
-Property: `hoodie.base.path` [Required] <br/>
-<span style="color:grey">Base DFS path under which all the data partitions are created. Always prefix it explicitly with the storage scheme (e.g hdfs://, s3:// etc). Hudi stores all the main meta-data about commits, savepoints, cleaning audit logs etc in .hoodie directory under the base directory. </span>
-
-##### withSchema(schema_str) {#withSchema} 
-Property: `hoodie.avro.schema` [Required]<br/>
-<span style="color:grey">This is the current reader avro schema for the dataset. This is a string of the entire schema. HoodieWriteClient uses this schema to pass on to implementations of HoodieRecordPayload to convert from the source format to avro record. This is also used when re-writing records during an update. </span>
-
-##### forTable(table_name) {#forTable} 
-Property: `hoodie.table.name` [Required] <br/>
- <span style="color:grey">Table name for the dataset, will be used for registering with Hive. Needs to be same across runs.</span>
-
-##### withBulkInsertParallelism(bulk_insert_parallelism = 1500) {#withBulkInsertParallelism} 
-Property: `hoodie.bulkinsert.shuffle.parallelism`<br/>
-<span style="color:grey">Bulk insert is meant to be used for large initial imports and this parallelism determines the initial number of files in your dataset. Tune this to achieve a desired optimal size during initial import.</span>
-
-##### withParallelism(insert_shuffle_parallelism = 1500, upsert_shuffle_parallelism = 1500) {#withParallelism} 
-Property: `hoodie.insert.shuffle.parallelism`, `hoodie.upsert.shuffle.parallelism`<br/>
-<span style="color:grey">Once data has been initially imported, this parallelism controls initial parallelism for reading input records. Ensure this value is high enough say: 1 partition for 1 GB of input data</span>
-
-##### combineInput(on_insert = false, on_update=true) {#combineInput} 
-Property: `hoodie.combine.before.insert`, `hoodie.combine.before.upsert`<br/>
-<span style="color:grey">Flag which first combines the input RDD and merges multiple partial records into a single record before inserting or updating in DFS</span>
-
-##### withWriteStatusStorageLevel(level = MEMORY_AND_DISK_SER) {#withWriteStatusStorageLevel} 
-Property: `hoodie.write.status.storage.level`<br/>
-<span style="color:grey">HoodieWriteClient.insert and HoodieWriteClient.upsert returns a persisted RDD[WriteStatus], this is because the Client can choose to inspect the WriteStatus and choose and commit or not based on the failures. This is a configuration for the storage level for this RDD </span>
-
-##### withAutoCommit(autoCommit = true) {#withAutoCommit} 
-Property: `hoodie.auto.commit`<br/>
-<span style="color:grey">Should HoodieWriteClient autoCommit after insert and upsert. The client can choose to turn off auto-commit and commit on a "defined success condition"</span>
-
-##### withAssumeDatePartitioning(assumeDatePartitioning = false) {#withAssumeDatePartitioning} 
-Property: `hoodie.assume.date.partitioning`<br/>
-<span style="color:grey">Should HoodieWriteClient assume the data is partitioned by dates, i.e three levels from base path. This is a stop-gap to support tables created by versions < 0.3.1. Will be removed eventually </span>
-
-##### withConsistencyCheckEnabled(enabled = false) {#withConsistencyCheckEnabled} 
-Property: `hoodie.consistency.check.enabled`<br/>
-<span style="color:grey">Should HoodieWriteClient perform additional checks to ensure written files' are listable on the underlying filesystem/storage. Set this to true, to workaround S3's eventual consistency model and ensure all data written as a part of a commit is faithfully available for queries. </span>
-
-#### Index configs
-Following configs control indexing behavior, which tags incoming records as either inserts or updates to older records. 
-
-[withIndexConfig](#withIndexConfig) (HoodieIndexConfig) <br/>
-<span style="color:grey">This is pluggable to have a external index (HBase) or use the default bloom filter stored in the Parquet files</span>
-        
-##### withIndexType(indexType = BLOOM) {#withIndexType}
-Property: `hoodie.index.type` <br/>
-<span style="color:grey">Type of index to use. Default is Bloom filter. Possible options are [BLOOM | HBASE | INMEMORY]. Bloom filters removes the dependency on a external system and is stored in the footer of the Parquet Data Files</span>
-
-##### bloomFilterNumEntries(numEntries = 60000) {#bloomFilterNumEntries}
-Property: `hoodie.index.bloom.num_entries` <br/>
-<span style="color:grey">Only applies if index type is BLOOM. <br/>This is the number of entries to be stored in the bloom filter. We assume the maxParquetFileSize is 128MB and averageRecordSize is 1024B and hence we approx a total of 130K records in a file. The default (60000) is roughly half of this approximation. [HUDI-56](https://issues.apache.org/jira/browse/HUDI-56) tracks computing this dynamically. Warning: Setting this very low, will generate a lot of false positives and index l [...]
-
-##### bloomFilterFPP(fpp = 0.000000001) {#bloomFilterFPP}
-Property: `hoodie.index.bloom.fpp` <br/>
-<span style="color:grey">Only applies if index type is BLOOM. <br/> Error rate allowed given the number of entries. This is used to calculate how many bits should be assigned for the bloom filter and the number of hash functions. This is usually set very low (default: 0.000000001), we like to tradeoff disk space for lower false positives</span>
-
-##### bloomIndexPruneByRanges(pruneRanges = true) {#bloomIndexPruneByRanges}
-Property: `hoodie.bloom.index.prune.by.ranges` <br/>
-<span style="color:grey">Only applies if index type is BLOOM. <br/> When true, range information from files to leveraged speed up index lookups. Particularly helpful, if the key has a monotonously increasing prefix, such as timestamp.</span>
-
-##### bloomIndexUseCaching(useCaching = true) {#bloomIndexUseCaching}
-Property: `hoodie.bloom.index.use.caching` <br/>
-<span style="color:grey">Only applies if index type is BLOOM. <br/> When true, the input RDD will cached to speed up index lookup by reducing IO for computing parallelism or affected partitions</span>
-
-##### bloomIndexTreebasedFilter(useTreeFilter = true) {#bloomIndexTreebasedFilter}
-Property: `hoodie.bloom.index.use.treebased.filter` <br/>
-<span style="color:grey">Only applies if index type is BLOOM. <br/> When true, interval tree based file pruning optimization is enabled. This mode speeds-up file-pruning based on key ranges when compared with the brute-force mode</span>
-
-##### bloomIndexBucketizedChecking(bucketizedChecking = true) {#bloomIndexBucketizedChecking}
-Property: `hoodie.bloom.index.bucketized.checking` <br/>
-<span style="color:grey">Only applies if index type is BLOOM. <br/> When true, bucketized bloom filtering is enabled. This reduces skew seen in sort based bloom index lookup</span>
-
-##### bloomIndexKeysPerBucket(keysPerBucket = 10000000) {#bloomIndexKeysPerBucket}
-Property: `hoodie.bloom.index.keys.per.bucket` <br/>
-<span style="color:grey">Only applies if bloomIndexBucketizedChecking is enabled and index type is bloom. <br/> This configuration controls the "bucket" size which tracks the number of record-key checks made against a single file and is the unit of work allocated to each partition performing bloom filter lookup. A higher value would amortize the fixed cost of reading a bloom filter to memory. </span>
-
-##### bloomIndexParallelism(0) {#bloomIndexParallelism}
-Property: `hoodie.bloom.index.parallelism` <br/>
-<span style="color:grey">Only applies if index type is BLOOM. <br/> This is the amount of parallelism for index lookup, which involves a Spark Shuffle. By default, this is auto computed based on input workload characteristics</span>
-
-##### hbaseZkQuorum(zkString) [Required] {#hbaseZkQuorum}  
-Property: `hoodie.index.hbase.zkquorum` <br/>
-<span style="color:grey">Only applies if index type is HBASE. HBase ZK Quorum url to connect to.</span>
-
-##### hbaseZkPort(port) [Required] {#hbaseZkPort}  
-Property: `hoodie.index.hbase.zkport` <br/>
-<span style="color:grey">Only applies if index type is HBASE. HBase ZK Quorum port to connect to.</span>
-
-##### hbaseZkZnodeParent(zkZnodeParent)  [Required] {#hbaseTableName}
-Property: `hoodie.index.hbase.zknode.path` <br/>
-<span style="color:grey">Only applies if index type is HBASE. This is the root znode that will contain all the znodes created/used by HBase.</span>
-
-##### hbaseTableName(tableName)  [Required] {#hbaseTableName}
-Property: `hoodie.index.hbase.table` <br/>
-<span style="color:grey">Only applies if index type is HBASE. HBase Table name to use as the index. Hudi stores the row_key and [partition_path, fileID, commitTime] mapping in the table.</span>
-
-    
-#### Storage configs
-Controls aspects around sizing parquet and log files.
-
-[withStorageConfig](#withStorageConfig) (HoodieStorageConfig) <br/>
-
-##### limitFileSize (size = 120MB) {#limitFileSize}
-Property: `hoodie.parquet.max.file.size` <br/>
-<span style="color:grey">Target size for parquet files produced by Hudi write phases. For DFS, this needs to be aligned with the underlying filesystem block size for optimal performance. </span>
-
-##### parquetBlockSize(rowgroupsize = 120MB) {#parquetBlockSize} 
-Property: `hoodie.parquet.block.size` <br/>
-<span style="color:grey">Parquet RowGroup size. Its better this is same as the file size, so that a single column within a file is stored continuously on disk</span>
-
-##### parquetPageSize(pagesize = 1MB) {#parquetPageSize} 
-Property: `hoodie.parquet.page.size` <br/>
-<span style="color:grey">Parquet page size. Page is the unit of read within a parquet file. Within a block, pages are compressed seperately. </span>
-
-##### parquetCompressionRatio(parquetCompressionRatio = 0.1) {#parquetCompressionRatio} 
-Property: `hoodie.parquet.compression.ratio` <br/>
-<span style="color:grey">Expected compression of parquet data used by Hudi, when it tries to size new parquet files. Increase this value, if bulk_insert is producing smaller than expected sized files</span>
-
-##### parquetCompressionCodec(parquetCompressionCodec = gzip) {#parquetCompressionCodec}
-Property: `hoodie.parquet.compression.codec` <br/>
-<span style="color:grey">Parquet compression codec name. Default is gzip. Possible options are [gzip | snappy | uncompressed | lzo]</span>
-
-##### logFileMaxSize(logFileSize = 1GB) {#logFileMaxSize} 
-Property: `hoodie.logfile.max.size` <br/>
-<span style="color:grey">LogFile max size. This is the maximum size allowed for a log file before it is rolled over to the next version. </span>
-
-##### logFileDataBlockMaxSize(dataBlockSize = 256MB) {#logFileDataBlockMaxSize} 
-Property: `hoodie.logfile.data.block.max.size` <br/>
-<span style="color:grey">LogFile Data block max size. This is the maximum size allowed for a single data block to be appended to a log file. This helps to make sure the data appended to the log file is broken up into sizable blocks to prevent from OOM errors. This size should be greater than the JVM memory. </span>
-
-##### logFileToParquetCompressionRatio(logFileToParquetCompressionRatio = 0.35) {#logFileToParquetCompressionRatio} 
-Property: `hoodie.logfile.to.parquet.compression.ratio` <br/>
-<span style="color:grey">Expected additional compression as records move from log files to parquet. Used for merge_on_read storage to send inserts into log files & control the size of compacted parquet file.</span>
- 
-##### parquetCompressionCodec(parquetCompressionCodec = gzip) {#parquetCompressionCodec} 
-Property: `hoodie.parquet.compression.codec` <br/>
-<span style="color:grey">Compression Codec for parquet files </span>
-
-#### Compaction configs
-Configs that control compaction (merging of log files onto a new parquet base file), cleaning (reclamation of older/unused file groups).
-[withCompactionConfig](#withCompactionConfig) (HoodieCompactionConfig) <br/>
-
-##### withCleanerPolicy(policy = KEEP_LATEST_COMMITS) {#withCleanerPolicy} 
-Property: `hoodie.cleaner.policy` <br/>
-<span style="color:grey"> Cleaning policy to be used. Hudi will delete older versions of parquet files to re-claim space. Any Query/Computation referring to this version of the file will fail. It is good to make sure that the data is retained for more than the maximum query execution time.</span>
-
-##### retainCommits(no_of_commits_to_retain = 24) {#retainCommits} 
-Property: `hoodie.cleaner.commits.retained` <br/>
-<span style="color:grey">Number of commits to retain. So data will be retained for num_of_commits * time_between_commits (scheduled). This also directly translates into how much you can incrementally pull on this dataset</span>
-
-##### archiveCommitsWith(minCommits = 96, maxCommits = 128) {#archiveCommitsWith} 
-Property: `hoodie.keep.min.commits`, `hoodie.keep.max.commits` <br/>
-<span style="color:grey">Each commit is a small file in the `.hoodie` directory. Since DFS typically does not favor lots of small files, Hudi archives older commits into a sequential log. A commit is published atomically by a rename of the commit file.</span>
-
-##### withCommitsArchivalBatchSize(batch = 10) {#withCommitsArchivalBatchSize}
-Property: `hoodie.commits.archival.batch` <br/>
-<span style="color:grey">This controls the number of commit instants read in memory as a batch and archived together.</span>
-
-##### compactionSmallFileSize(size = 100MB) {#compactionSmallFileSize} 
-Property: `hoodie.parquet.small.file.limit` <br/>
-<span style="color:grey">This should be less < maxFileSize and setting it to 0, turns off this feature. Small files can always happen because of the number of insert records in a partition in a batch. Hudi has an option to auto-resolve small files by masking inserts into this partition as updates to existing small files. The size here is the minimum file size considered as a "small file size".</span>
-
-##### insertSplitSize(size = 500000) {#insertSplitSize} 
-Property: `hoodie.copyonwrite.insert.split.size` <br/>
-<span style="color:grey">Insert Write Parallelism. Number of inserts grouped for a single partition. Writing out 100MB files, with atleast 1kb records, means 100K records per file. Default is to overprovision to 500K. To improve insert latency, tune this to match the number of records in a single file. Setting this to a low number, will result in small files (particularly when compactionSmallFileSize is 0)</span>
-
-##### autoTuneInsertSplits(true) {#autoTuneInsertSplits} 
-Property: `hoodie.copyonwrite.insert.auto.split` <br/>
-<span style="color:grey">Should hudi dynamically compute the insertSplitSize based on the last 24 commit's metadata. Turned off by default. </span>
-
-##### approxRecordSize(size = 1024) {#approxRecordSize} 
-Property: `hoodie.copyonwrite.record.size.estimate` <br/>
-<span style="color:grey">The average record size. If specified, hudi will use this and not compute dynamically based on the last 24 commit's metadata. No value set as default. This is critical in computing the insert parallelism and bin-packing inserts into small files. See above.</span>
-
-##### withInlineCompaction(inlineCompaction = false) {#withInlineCompaction} 
-Property: `hoodie.compact.inline` <br/>
-<span style="color:grey">When set to true, compaction is triggered by the ingestion itself, right after a commit/deltacommit action as part of insert/upsert/bulk_insert</span>
-
-##### withMaxNumDeltaCommitsBeforeCompaction(maxNumDeltaCommitsBeforeCompaction = 10) {#withMaxNumDeltaCommitsBeforeCompaction} 
-Property: `hoodie.compact.inline.max.delta.commits` <br/>
-<span style="color:grey">Number of max delta commits to keep before triggering an inline compaction</span>
-
-##### withCompactionLazyBlockReadEnabled(true) {#withCompactionLazyBlockReadEnabled} 
-Property: `hoodie.compaction.lazy.block.read` <br/>
-<span style="color:grey">When a CompactedLogScanner merges all log files, this config helps to choose whether the logblocks should be read lazily or not. Choose true to use I/O intensive lazy block reading (low memory usage) or false for Memory intensive immediate block read (high memory usage)</span>
-
-##### withCompactionReverseLogReadEnabled(false) {#withCompactionReverseLogReadEnabled} 
-Property: `hoodie.compaction.reverse.log.read` <br/>
-<span style="color:grey">HoodieLogFormatReader reads a logfile in the forward direction starting from pos=0 to pos=file_length. If this config is set to true, the Reader reads the logfile in reverse direction, from pos=file_length to pos=0</span>
-
-##### withCleanerParallelism(cleanerParallelism = 200) {#withCleanerParallelism} 
-Property: `hoodie.cleaner.parallelism` <br/>
-<span style="color:grey">Increase this if cleaning becomes slow.</span>
-
-##### withCompactionStrategy(compactionStrategy = org.apache.hudi.io.compact.strategy.LogFileSizeBasedCompactionStrategy) {#withCompactionStrategy} 
-Property: `hoodie.compaction.strategy` <br/>
-<span style="color:grey">Compaction strategy decides which file groups are picked up for compaction during each compaction run. By default. Hudi picks the log file with most accumulated unmerged data</span>
-
-##### withTargetIOPerCompactionInMB(targetIOPerCompactionInMB = 500000) {#withTargetIOPerCompactionInMB} 
-Property: `hoodie.compaction.target.io` <br/>
-<span style="color:grey">Amount of MBs to spend during compaction run for the LogFileSizeBasedCompactionStrategy. This value helps bound ingestion latency while compaction is run inline mode.</span>
-
-##### withTargetPartitionsPerDayBasedCompaction(targetPartitionsPerCompaction = 10) {#withTargetPartitionsPerDayBasedCompaction} 
-Property: `hoodie.compaction.daybased.target` <br/>
-<span style="color:grey">Used by org.apache.hudi.io.compact.strategy.DayBasedCompactionStrategy to denote the number of latest partitions to compact during a compaction run.</span>    
-
-##### withPayloadClass(payloadClassName = org.apache.hudi.common.model.HoodieAvroPayload) {#payloadClassName} 
-Property: `hoodie.compaction.payload.class` <br/>
-<span style="color:grey">This needs to be same as class used during insert/upserts. Just like writing, compaction also uses the record payload class to merge records in the log against each other, merge again with the base file and produce the final record to be written after compaction.</span>
-
-
-    
-#### Metrics configs
-Enables reporting of Hudi metrics to graphite.
-[withMetricsConfig](#withMetricsConfig) (HoodieMetricsConfig) <br/>
-<span style="color:grey">Hudi publishes metrics on every commit, clean, rollback etc.</span>
-
-##### on(metricsOn = true) {#on} 
-Property: `hoodie.metrics.on` <br/>
-<span style="color:grey">Turn sending metrics on/off. on by default.</span>
-
-##### withReporterType(reporterType = GRAPHITE) {#withReporterType} 
-Property: `hoodie.metrics.reporter.type` <br/>
-<span style="color:grey">Type of metrics reporter. Graphite is the default and the only value suppported.</span>
-
-##### toGraphiteHost(host = localhost) {#toGraphiteHost} 
-Property: `hoodie.metrics.graphite.host` <br/>
-<span style="color:grey">Graphite host to connect to</span>
-
-##### onGraphitePort(port = 4756) {#onGraphitePort} 
-Property: `hoodie.metrics.graphite.port` <br/>
-<span style="color:grey">Graphite port to connect to</span>
-
-##### usePrefix(prefix = "") {#usePrefix} 
-Property: `hoodie.metrics.graphite.metric.prefix` <br/>
-<span style="color:grey">Standard prefix applied to all metrics. This helps to add datacenter, environment information for e.g</span>
-    
-#### Memory configs
-Controls memory usage for compaction and merges, performed internally by Hudi
-[withMemoryConfig](#withMemoryConfig) (HoodieMemoryConfig) <br/>
-<span style="color:grey">Memory related configs</span>
-
-##### withMaxMemoryFractionPerPartitionMerge(maxMemoryFractionPerPartitionMerge = 0.6) {#withMaxMemoryFractionPerPartitionMerge} 
-Property: `hoodie.memory.merge.fraction` <br/>
-<span style="color:grey">This fraction is multiplied with the user memory fraction (1 - spark.memory.fraction) to get a final fraction of heap space to use during merge </span>
-
-##### withMaxMemorySizePerCompactionInBytes(maxMemorySizePerCompactionInBytes = 1GB) {#withMaxMemorySizePerCompactionInBytes} 
-Property: `hoodie.memory.compaction.fraction` <br/>
-<span style="color:grey">HoodieCompactedLogScanner reads logblocks, converts records to HoodieRecords and then merges these log blocks and records. At any point, the number of entries in a log block can be less than or equal to the number of entries in the corresponding parquet file. This can lead to OOM in the Scanner. Hence, a spillable map helps alleviate the memory pressure. Use this config to set the max allowable inMemory footprint of the spillable map.</span>
-
-##### withWriteStatusFailureFraction(failureFraction = 0.1) {#withWriteStatusFailureFraction}
-Property: `hoodie.memory.writestatus.failure.fraction` <br/>
-<span style="color:grey">This property controls what fraction of the failed record, exceptions we report back to driver</span>
diff --git a/docs-tmp/_docs/2_5_performance.md b/docs-tmp/_docs/2_5_performance.md
deleted file mode 100644
index 3bcd69d..0000000
--- a/docs-tmp/_docs/2_5_performance.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title: Performance
-keywords: hudi, index, storage, compaction, cleaning, implementation
-permalink: /docs/performance.html
-toc: false
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-In this section, we go over some real world performance numbers for Hudi upserts, incremental pull and compare them against
-the conventional alternatives for achieving these tasks. 
-
-## Upserts
-
-Following shows the speed up obtained for NoSQL database ingestion, from incrementally upserting on a Hudi dataset on the copy-on-write storage,
-on 5 tables ranging from small to huge (as opposed to bulk loading the tables)
-
-<figure>
-    <img class="docimage" src="/assets/images/hudi_upsert_perf1.png" alt="hudi_upsert_perf1.png" style="max-width: 1000px" />
-</figure>
-
-Given Hudi can build the dataset incrementally, it opens doors for also scheduling ingesting more frequently thus reducing latency, with
-significant savings on the overall compute cost.
-
-<figure>
-    <img class="docimage" src="/assets/images/hudi_upsert_perf2.png" alt="hudi_upsert_perf2.png" style="max-width: 1000px" />
-</figure>
-
-Hudi upserts have been stress tested upto 4TB in a single commit across the t1 table. 
-See [here](https://cwiki.apache.org/confluence/display/HUDI/Tuning+Guide) for some tuning tips.
-
-## Indexing
-
-In order to efficiently upsert data, Hudi needs to classify records in a write batch into inserts & updates (tagged with the file group 
-it belongs to). In order to speed this operation, Hudi employs a pluggable index mechanism that stores a mapping between recordKey and 
-the file group id it belongs to. By default, Hudi uses a built in index that uses file ranges and bloom filters to accomplish this, with
-upto 10x speed up over a spark join to do the same. 
-
-Hudi provides best indexing performance when you model the recordKey to be monotonically increasing (e.g timestamp prefix), leading to range pruning filtering
-out a lot of files for comparison. Even for UUID based keys, there are [known techniques](https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/) to achieve this.
-For e.g , with 100M timestamp prefixed keys (5% updates, 95% inserts) on a event table with 80B keys/3 partitions/11416 files/10TB data, Hudi index achieves a 
-**~7X (2880 secs vs 440 secs) speed up** over vanilla spark join. Even for a challenging workload like an '100% update' database ingestion workload spanning 
-3.25B UUID keys/30 partitions/6180 files using 300 cores, Hudi indexing offers a **80-100% speedup**.
-
-## Read Optimized Queries
-
-The major design goal for read optimized view is to achieve the latency reduction & efficiency gains in previous section,
-with no impact on queries. Following charts compare the Hudi vs non-Hudi datasets across Hive/Presto/Spark queries and demonstrate this.
-
-**Hive**
-
-<figure>
-    <img class="docimage" src="/assets/images/hudi_query_perf_hive.png" alt="hudi_query_perf_hive.png" style="max-width: 800px" />
-</figure>
-
-**Spark**
-
-<figure>
-    <img class="docimage" src="/assets/images/hudi_query_perf_spark.png" alt="hudi_query_perf_spark.png" style="max-width: 1000px" />
-</figure>
-
-**Presto**
-
-<figure>
-    <img class="docimage" src="/assets/images/hudi_query_perf_presto.png" alt="hudi_query_perf_presto.png" style="max-width: 1000px" />
-</figure>
diff --git a/docs-tmp/_docs/2_6_admin_guide.md b/docs-tmp/_docs/2_6_admin_guide.md
deleted file mode 100644
index 6990f50..0000000
--- a/docs-tmp/_docs/2_6_admin_guide.md
+++ /dev/null
@@ -1,444 +0,0 @@
----
-title: Administering Hudi Pipelines
-keywords: hudi, administration, operation, devops
-permalink: /docs/admin_guide.html
-summary: This section offers an overview of tools available to operate an ecosystem of Hudi datasets
-toc: true
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-Admins/ops can gain visibility into Hudi datasets/pipelines in the following ways
-
- - [Administering via the Admin CLI](#admin-cli)
- - [Graphite metrics](#metrics)
- - [Spark UI of the Hudi Application](#spark-ui)
-
-This section provides a glimpse into each of these, with some general guidance on [troubleshooting](#troubleshooting)
-
-## Admin CLI
-
-Once hudi has been built, the shell can be fired by via  `cd hudi-cli && ./hudi-cli.sh`.
-A hudi dataset resides on DFS, in a location referred to as the **basePath** and we would need this location in order to connect to a Hudi dataset.
-Hudi library effectively manages this dataset internally, using .hoodie subfolder to track all metadata
-
-To initialize a hudi table, use the following command.
-
-```java
-18/09/06 15:56:52 INFO annotation.AutowiredAnnotationBeanPostProcessor: JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
-============================================
-*                                          *
-*     _    _           _   _               *
-*    | |  | |         | | (_)              *
-*    | |__| |       __| |  -               *
-*    |  __  ||   | / _` | ||               *
-*    | |  | ||   || (_| | ||               *
-*    |_|  |_|\___/ \____/ ||               *
-*                                          *
-============================================
-
-Welcome to Hoodie CLI. Please type help if you are looking for help.
-hudi->create --path /user/hive/warehouse/table1 --tableName hoodie_table_1 --tableType COPY_ON_WRITE
-.....
-18/09/06 15:57:15 INFO table.HoodieTableMetaClient: Finished Loading Table of type COPY_ON_WRITE from ...
-```
-
-To see the description of hudi table, use the command:
-
-```java
-hoodie:hoodie_table_1->desc
-18/09/06 15:57:19 INFO timeline.HoodieActiveTimeline: Loaded instants []
-    _________________________________________________________
-    | Property                | Value                        |
-    |========================================================|
-    | basePath                | ...                          |
-    | metaPath                | ...                          |
-    | fileSystem              | hdfs                         |
-    | hoodie.table.name       | hoodie_table_1               |
-    | hoodie.table.type       | COPY_ON_WRITE                |
-    | hoodie.archivelog.folder|                              |
-```
-
-Following is a sample command to connect to a Hudi dataset contains uber trips.
-
-```java
-hoodie:trips->connect --path /app/uber/trips
-
-16/10/05 23:20:37 INFO model.HoodieTableMetadata: Attempting to load the commits under /app/uber/trips/.hoodie with suffix .commit
-16/10/05 23:20:37 INFO model.HoodieTableMetadata: Attempting to load the commits under /app/uber/trips/.hoodie with suffix .inflight
-16/10/05 23:20:37 INFO model.HoodieTableMetadata: All commits :HoodieCommits{commitList=[20161002045850, 20161002052915, 20161002055918, 20161002065317, 20161002075932, 20161002082904, 20161002085949, 20161002092936, 20161002105903, 20161002112938, 20161002123005, 20161002133002, 20161002155940, 20161002165924, 20161002172907, 20161002175905, 20161002190016, 20161002192954, 20161002195925, 20161002205935, 20161002215928, 20161002222938, 20161002225915, 20161002232906, 20161003003028, 201 [...]
-Metadata for table trips loaded
-hoodie:trips->
-```
-
-Once connected to the dataset, a lot of other commands become available. The shell has contextual autocomplete help (press TAB) and below is a list of all commands, few of which are reviewed in this section
-are reviewed
-
-```java
-hoodie:trips->help
-* ! - Allows execution of operating system (OS) commands
-* // - Inline comment markers (start of line only)
-* ; - Inline comment markers (start of line only)
-* addpartitionmeta - Add partition metadata to a dataset, if not present
-* clear - Clears the console
-* cls - Clears the console
-* commit rollback - Rollback a commit
-* commits compare - Compare commits with another Hoodie dataset
-* commit showfiles - Show file level details of a commit
-* commit showpartitions - Show partition level details of a commit
-* commits refresh - Refresh the commits
-* commits show - Show the commits
-* commits sync - Compare commits with another Hoodie dataset
-* connect - Connect to a hoodie dataset
-* date - Displays the local date and time
-* exit - Exits the shell
-* help - List all commands usage
-* quit - Exits the shell
-* records deduplicate - De-duplicate a partition path contains duplicates & produce repaired files to replace with
-* script - Parses the specified resource file and executes its commands
-* stats filesizes - File Sizes. Display summary stats on sizes of files
-* stats wa - Write Amplification. Ratio of how many records were upserted to how many records were actually written
-* sync validate - Validate the sync by counting the number of records
-* system properties - Shows the shell's properties
-* utils loadClass - Load a class
-* version - Displays shell version
-
-hoodie:trips->
-```
-
-
-### Inspecting Commits
-
-The task of upserting or inserting a batch of incoming records is known as a **commit** in Hudi. A commit provides basic atomicity guarantees such that only commited data is available for querying.
-Each commit has a monotonically increasing string/number called the **commit number**. Typically, this is the time at which we started the commit.
-
-To view some basic information about the last 10 commits,
-
-
-```java
-hoodie:trips->commits show --sortBy "Total Bytes Written" --desc true --limit 10
-    ________________________________________________________________________________________________________________________________________________________________________
-    | CommitTime    | Total Bytes Written| Total Files Added| Total Files Updated| Total Partitions Written| Total Records Written| Total Update Records Written| Total Errors|
-    |=======================================================================================================================================================================|
-    ....
-    ....
-    ....
-hoodie:trips->
-```
-
-At the start of each write, Hudi also writes a .inflight commit to the .hoodie folder. You can use the timestamp there to estimate how long the commit has been inflight
-
-
-```java
-$ hdfs dfs -ls /app/uber/trips/.hoodie/*.inflight
--rw-r--r--   3 vinoth supergroup     321984 2016-10-05 23:18 /app/uber/trips/.hoodie/20161005225920.inflight
-```
-
-
-### Drilling Down to a specific Commit
-
-To understand how the writes spread across specific partiions,
-
-
-```java
-hoodie:trips->commit showpartitions --commit 20161005165855 --sortBy "Total Bytes Written" --desc true --limit 10
-    __________________________________________________________________________________________________________________________________________
-    | Partition Path| Total Files Added| Total Files Updated| Total Records Inserted| Total Records Updated| Total Bytes Written| Total Errors|
-    |=========================================================================================================================================|
-     ....
-     ....
-```
-
-If you need file level granularity , we can do the following
-
-
-```java
-hoodie:trips->commit showfiles --commit 20161005165855 --sortBy "Partition Path"
-    ________________________________________________________________________________________________________________________________________________________
-    | Partition Path| File ID                             | Previous Commit| Total Records Updated| Total Records Written| Total Bytes Written| Total Errors|
-    |=======================================================================================================================================================|
-    ....
-    ....
-```
-
-
-### FileSystem View
-
-Hudi views each partition as a collection of file-groups with each file-group containing a list of file-slices in commit
-order (See Concepts). The below commands allow users to view the file-slices for a data-set.
-
-```java
- hoodie:stock_ticks_mor->show fsview all
- ....
-  _______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
- | Partition | FileId | Base-Instant | Data-File | Data-File Size| Num Delta Files| Total Delta File Size| Delta Files |
- |==============================================================================================================================================================================================================================================================================================================================================================================================================|
- | 2018/08/31| 111415c3-f26d-4639-86c8-f9956f245ac3| 20181002180759| hdfs://namenode:8020/user/hive/warehouse/stock_ticks_mor/2018/08/31/111415c3-f26d-4639-86c8-f9956f245ac3_0_20181002180759.parquet| 432.5 KB | 1 | 20.8 KB | [HoodieLogFile {hdfs://namenode:8020/user/hive/warehouse/stock_ticks_mor/2018/08/31/.111415c3-f26d-4639-86c8-f9956f245ac3_20181002180759.log.1}]|
-
-
-
- hoodie:stock_ticks_mor->show fsview latest --partitionPath "2018/08/31"
- ......
- ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ [...]
- | Partition | FileId | Base-Instant | Data-File | Data-File Size| Num Delta Files| Total Delta Size| Delta Size - compaction scheduled| Delta Size - compaction unscheduled| Delta To Base Ratio - compaction scheduled| Delta To Base Ratio - compaction unscheduled| Delta Files - compaction scheduled | Delta Files - compaction unscheduled|
- |========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== [...]
- | 2018/08/31| 111415c3-f26d-4639-86c8-f9956f245ac3| 20181002180759| hdfs://namenode:8020/user/hive/warehouse/stock_ticks_mor/2018/08/31/111415c3-f26d-4639-86c8-f9956f245ac3_0_20181002180759.parquet| 432.5 KB | 1 | 20.8 KB | 20.8 KB | 0.0 B | 0.0 B | 0.0 B | [HoodieLogFile {hdfs://namenode:8020/user/hive/warehouse/stock_ticks_mor/2018/08/31/.111415c3-f26d-4639-86c8-f9956f245ac3_20181002180759.log.1}]| [] |
-
- hoodie:stock_ticks_mor->
-```
-
-
-### Statistics
-
-Since Hudi directly manages file sizes for DFS dataset, it might be good to get an overall picture
-
-
-```java
-hoodie:trips->stats filesizes --partitionPath 2016/09/01 --sortBy "95th" --desc true --limit 10
-    ________________________________________________________________________________________________
-    | CommitTime    | Min     | 10th    | 50th    | avg     | 95th    | Max     | NumFiles| StdDev  |
-    |===============================================================================================|
-    | <COMMIT_ID>   | 93.9 MB | 93.9 MB | 93.9 MB | 93.9 MB | 93.9 MB | 93.9 MB | 2       | 2.3 KB  |
-    ....
-    ....
-```
-
-In case of Hudi write taking much longer, it might be good to see the write amplification for any sudden increases
-
-
-```java
-hoodie:trips->stats wa
-    __________________________________________________________________________
-    | CommitTime    | Total Upserted| Total Written| Write Amplifiation Factor|
-    |=========================================================================|
-    ....
-    ....
-```
-
-
-### Archived Commits
-
-In order to limit the amount of growth of .commit files on DFS, Hudi archives older .commit files (with due respect to the cleaner policy) into a commits.archived file.
-This is a sequence file that contains a mapping from commitNumber => json with raw information about the commit (same that is nicely rolled up above).
-
-
-### Compactions
-
-To get an idea of the lag between compaction and writer applications, use the below command to list down all
-pending compactions.
-
-```java
-hoodie:trips->compactions show all
-     ___________________________________________________________________
-    | Compaction Instant Time| State    | Total FileIds to be Compacted|
-    |==================================================================|
-    | <INSTANT_1>            | REQUESTED| 35                           |
-    | <INSTANT_2>            | INFLIGHT | 27                           |
-```
-
-To inspect a specific compaction plan, use
-
-```java
-hoodie:trips->compaction show --instant <INSTANT_1>
-    _________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
-    | Partition Path| File Id | Base Instant  | Data File Path                                    | Total Delta Files| getMetrics                                                                                                                    |
-    |================================================================================================================================================================================================================================================
-    | 2018/07/17    | <UUID>  | <INSTANT_1>   | viewfs://ns-default/.../../UUID_<INSTANT>.parquet | 1                | {TOTAL_LOG_FILES=1.0, TOTAL_IO_READ_MB=1230.0, TOTAL_LOG_FILES_SIZE=2.51255751E8, TOTAL_IO_WRITE_MB=991.0, TOTAL_IO_MB=2221.0}|
-
-```
-
-To manually schedule or run a compaction, use the below command. This command uses spark launcher to perform compaction
-operations. 
-
-**NOTE:** Make sure no other application is scheduling compaction for this dataset concurrently
-{: .notice--info}
-
-```java
-hoodie:trips->help compaction schedule
-Keyword:                   compaction schedule
-Description:               Schedule Compaction
- Keyword:                  sparkMemory
-   Help:                   Spark executor memory
-   Mandatory:              false
-   Default if specified:   '__NULL__'
-   Default if unspecified: '1G'
-
-* compaction schedule - Schedule Compaction
-```
-
-```java
-hoodie:trips->help compaction run
-Keyword:                   compaction run
-Description:               Run Compaction for given instant time
- Keyword:                  tableName
-   Help:                   Table name
-   Mandatory:              true
-   Default if specified:   '__NULL__'
-   Default if unspecified: '__NULL__'
-
- Keyword:                  parallelism
-   Help:                   Parallelism for hoodie compaction
-   Mandatory:              true
-   Default if specified:   '__NULL__'
-   Default if unspecified: '__NULL__'
-
- Keyword:                  schemaFilePath
-   Help:                   Path for Avro schema file
-   Mandatory:              true
-   Default if specified:   '__NULL__'
-   Default if unspecified: '__NULL__'
-
- Keyword:                  sparkMemory
-   Help:                   Spark executor memory
-   Mandatory:              true
-   Default if specified:   '__NULL__'
-   Default if unspecified: '__NULL__'
-
- Keyword:                  retry
-   Help:                   Number of retries
-   Mandatory:              true
-   Default if specified:   '__NULL__'
-   Default if unspecified: '__NULL__'
-
- Keyword:                  compactionInstant
-   Help:                   Base path for the target hoodie dataset
-   Mandatory:              true
-   Default if specified:   '__NULL__'
-   Default if unspecified: '__NULL__'
-
-* compaction run - Run Compaction for given instant time
-```
-
-### Validate Compaction
-
-Validating a compaction plan : Check if all the files necessary for compactions are present and are valid
-
-```java
-hoodie:stock_ticks_mor->compaction validate --instant 20181005222611
-...
-
-   COMPACTION PLAN VALID
-
-    ___________________________________________________________________________________________________________________________________________________________________________________________________________________________
-    | File Id                             | Base Instant Time| Base Data File                                                                                                                   | Num Delta Files| Valid| Error|
-    |==========================================================================================================================================================================================================================|
-    | 05320e98-9a57-4c38-b809-a6beaaeb36bd| 20181005222445   | hdfs://namenode:8020/user/hive/warehouse/stock_ticks_mor/2018/08/31/05320e98-9a57-4c38-b809-a6beaaeb36bd_0_20181005222445.parquet| 1              | true |      |
-
-
-
-hoodie:stock_ticks_mor->compaction validate --instant 20181005222601
-
-   COMPACTION PLAN INVALID
-
-    _______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
-    | File Id                             | Base Instant Time| Base Data File                                                                                                                   | Num Delta Files| Valid| Error                                                                           |
-    |=====================================================================================================================================================================================================================================================================================================|
-    | 05320e98-9a57-4c38-b809-a6beaaeb36bd| 20181005222445   | hdfs://namenode:8020/user/hive/warehouse/stock_ticks_mor/2018/08/31/05320e98-9a57-4c38-b809-a6beaaeb36bd_0_20181005222445.parquet| 1              | false| All log files specified in compaction operation is not present. Missing ....    |
-```
-
-**NOTE:** The following commands must be executed without any other writer/ingestion application running.
-{: .notice--warning}
-
-Sometimes, it becomes necessary to remove a fileId from a compaction-plan inorder to speed-up or unblock compaction
-operation. Any new log-files that happened on this file after the compaction got scheduled will be safely renamed
-so that are preserved. Hudi provides the following CLI to support it
-
-
-### UnScheduling Compaction
-
-```java
-hoodie:trips->compaction unscheduleFileId --fileId <FileUUID>
-....
-No File renames needed to unschedule file from pending compaction. Operation successful.
-```
-
-In other cases, an entire compaction plan needs to be reverted. This is supported by the following CLI
-
-```java
-hoodie:trips->compaction unschedule --compactionInstant <compactionInstant>
-.....
-No File renames needed to unschedule pending compaction. Operation successful.
-```
-
-### Repair Compaction
-
-The above compaction unscheduling operations could sometimes fail partially (e:g -> DFS temporarily unavailable). With
-partial failures, the compaction operation could become inconsistent with the state of file-slices. When you run
-`compaction validate`, you can notice invalid compaction operations if there is one.  In these cases, the repair
-command comes to the rescue, it will rearrange the file-slices so that there is no loss and the file-slices are
-consistent with the compaction plan
-
-```java
-hoodie:stock_ticks_mor->compaction repair --instant 20181005222611
-......
-Compaction successfully repaired
-.....
-```
-
-
-## Metrics {#metrics}
-
-Once the Hudi Client is configured with the right datasetname and environment for metrics, it produces the following graphite metrics, that aid in debugging hudi datasets
-
- - **Commit Duration** - This is amount of time it took to successfully commit a batch of records
- - **Rollback Duration** - Similarly, amount of time taken to undo partial data left over by a failed commit (happens everytime automatically after a failing write)
- - **File Level metrics** - Shows the amount of new files added, versions, deleted (cleaned) in each commit
- - **Record Level Metrics** - Total records inserted/updated etc per commit
- - **Partition Level metrics** - number of partitions upserted (super useful to understand sudden spikes in commit duration)
-
-These metrics can then be plotted on a standard tool like grafana. Below is a sample commit duration chart.
-
-<figure>
-    <img class="docimage" src="/assets/images/hudi_commit_duration.png" alt="hudi_commit_duration.png" style="max-width: 100%" />
-</figure>
-
-
-## Troubleshooting Failures {#troubleshooting}
-
-Section below generally aids in debugging Hudi failures. Off the bat, the following metadata is added to every record to help triage  issues easily using standard Hadoop SQL engines (Hive/Presto/Spark)
-
- - **_hoodie_record_key** - Treated as a primary key within each DFS partition, basis of all updates/inserts
- - **_hoodie_commit_time** - Last commit that touched this record
- - **_hoodie_file_name** - Actual file name containing the record (super useful to triage duplicates)
- - **_hoodie_partition_path** - Path from basePath that identifies the partition containing this record
-
-**NOTE:** As of now, Hudi assumes the application passes in the same deterministic partitionpath for a given recordKey. i.e the uniqueness of record key is only enforced within each partition.
-{: .notice--info}
-
-### Missing records
-
-Please check if there were any write errors using the admin commands above, during the window at which the record could have been written.
-If you do find errors, then the record was not actually written by Hudi, but handed back to the application to decide what to do with it.
-
-### Duplicates
-
-First of all, please confirm if you do indeed have duplicates **AFTER** ensuring the query is accessing the Hudi datasets [properly](sql_queries.html) .
-
- - If confirmed, please use the metadata fields above, to identify the physical files & partition files containing the records .
- - If duplicates span files across partitionpath, then this means your application is generating different partitionPaths for same recordKey, Please fix your app
- - if duplicates span multiple files within the same partitionpath, please engage with mailing list. This should not happen. You can use the `records deduplicate` command to fix your data.
-
-### Spark failures {#spark-ui}
-
-Typical upsert() DAG looks like below. Note that Hudi client also caches intermediate RDDs to intelligently profile workload and size files and spark parallelism.
-Also Spark UI shows sortByKey twice due to the probe job also being shown, nonetheless its just a single sort.
-
-<figure>
-    <img class="docimage" src="/assets/images/hudi_upsert_dag.png" alt="hudi_upsert_dag.png" style="max-width: 100%" />
-</figure>
-
-At a high level, there are two steps
-
-**Index Lookup to identify files to be changed**
-
- - Job 1 : Triggers the input data read, converts to HoodieRecord object and then stops at obtaining a spread of input records to target partition paths
- - Job 2 : Load the set of file names which we need check against
- - Job 3  & 4 : Actual lookup after smart sizing of spark join parallelism, by joining RDDs in 1 & 2 above
- - Job 5 : Have a tagged RDD of recordKeys with locations
-
-**Performing the actual writing of data**
-
- - Job 6 : Lazy join of incoming records against recordKey, location to provide a final set of HoodieRecord which now contain the information about which file/partitionpath they are found at (or null if insert). Then also profile the workload again to determine sizing of files
- - Job 7 : Actual writing of data (update + insert + insert turned to updates to maintain file size)
-
-Depending on the exception source (Hudi/Spark), the above knowledge of the DAG can be used to pinpoint the actual issue. The most often encountered failures result from YARN/DFS temporary failures.
-In the future, a more sophisticated debug/management UI would be added to the project, that can help automate some of this debugging.
diff --git a/docs-tmp/_docs/3_1_privacy.md b/docs-tmp/_docs/3_1_privacy.md
deleted file mode 100644
index af9243f..0000000
--- a/docs-tmp/_docs/3_1_privacy.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: Privacy Policy
-keywords: hudi, privacy
-permalink: /docs/privacy.html
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-Information about your use of this website is collected using server access logs and a tracking cookie.
-The collected information consists of the following:
-
-* The IP address from which you access the website;
-* The type of browser and operating system you use to access our site;
-* The date and time you access our site;
-* The pages you visit;
-* The addresses of pages from where you followed a link to our site.
-
-Part of this information is gathered using a tracking cookie set by the [Google Analytics](http://www.google.com/analytics) service and handled by Google as described in their [privacy policy](http://www.google.com/privacy.html). See your browser documentation for instructions on how to disable the cookie if you prefer not to share this data with Google.
-
-We use the gathered information to help us make our site more useful to visitors and to better understand how and when our site is used. We do not track or collect personally identifiable information or associate gathered data with any personally identifying information from other sources.
-
-By using this website, you consent to the collection of this data in the manner and for the purpose described above.
-
-The Hudi development community welcomes your questions or comments regarding this Privacy Policy. Send them to dev@hudi.apache.org
diff --git a/docs-tmp/_docs/3_2_docs_versions.md b/docs-tmp/_docs/3_2_docs_versions.md
deleted file mode 100644
index 75d434e..0000000
--- a/docs-tmp/_docs/3_2_docs_versions.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-title: Docs Versions
-keywords: hudi, privacy
-permalink: /docs/docs-versions.html
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-<ul>
-  {% for d in site.previous_docs %}
-    <li><a href="{{ d[1] }}">{{ d[0] }}</a></li>
-  {% endfor %}
-</ul>
\ No newline at end of file
diff --git a/docs-tmp/_includes/archive-single.html b/docs-tmp/_includes/archive-single.html
deleted file mode 100644
index 21ee9fb..0000000
--- a/docs-tmp/_includes/archive-single.html
+++ /dev/null
@@ -1,35 +0,0 @@
-{% if post.header.teaser %}
-  {% capture teaser %}{{ post.header.teaser }}{% endcapture %}
-{% else %}
-  {% assign teaser = site.teaser %}
-{% endif %}
-
-{% if post.id %}
-  {% assign title = post.title | markdownify | remove: "<p>" | remove: "</p>" %}
-{% else %}
-  {% assign title = post.title %}
-{% endif %}
-
-<div class="{{ include.type | default: "list" }}__item">
-  <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
-    {% if include.type == "grid" and teaser %}
-      <div class="archive__item-teaser">
-        <img src=
-          {% if teaser contains "://" %}
-            "{{ teaser }}"
-          {% else %}
-            "{{ teaser | relative_url }}"
-          {% endif %}
-          alt="">
-      </div>
-    {% endif %}
-    <h2 class="archive__item-title" itemprop="headline">
-      {% if post.link %}
-        <a href="{{ post.link }}">{{ title }}</a>
-      {% else %}
-        <a href="{{ post.url | relative_url }}" rel="permalink">{{ title }}</a>
-      {% endif %}
-    </h2>
-    {% if post.excerpt %}<p class="archive__item-excerpt" itemprop="description">{{ post.excerpt | markdownify | strip_html | truncate: 160 }}</p>{% endif %}
-  </article>
-</div>
diff --git a/docs-tmp/_includes/browser-upgrade.html b/docs-tmp/_includes/browser-upgrade.html
deleted file mode 100644
index ec6ad0a..0000000
--- a/docs-tmp/_includes/browser-upgrade.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<!--[if lt IE 9]>
-<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
-<![endif]-->
diff --git a/docs-tmp/_includes/figure b/docs-tmp/_includes/figure
deleted file mode 100644
index 8d96491..0000000
--- a/docs-tmp/_includes/figure
+++ /dev/null
@@ -1,9 +0,0 @@
-<figure class="{{ include.class }}">
-  <img src=
-    {% if include.image_path contains "://" %}
-      "{{ include.image_path }}"
-    {% else %}
-      "{{ include.image_path | relative_url }}"
-    {% endif %}
-    alt="{% if include.alt %}{{ include.alt }}{% endif %}">
-</figure>
diff --git a/docs-tmp/_includes/footer.html b/docs-tmp/_includes/footer.html
deleted file mode 100644
index 71c88f0..0000000
--- a/docs-tmp/_includes/footer.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-<div class="row">
-  <div class="col-lg-12 footer">
-    <p>
-      <a class="footer-link-img" href="https://apache.org">
-        <img width="250px" src="/assets/images/asf_logo.svg" alt="The Apache Software Foundation">
-      </a>
-    </p>
-    <p>
-      Copyright &copy; <span id="copyright-year">2019</span> <a href="https://apache.org">The Apache Software Foundation</a>, Licensed under the Apache License, Version 2.0.
-      Hudi, Apache and the Apache feather logo are trademarks of The Apache Software Foundation. <a href="/docs/privacy">Privacy Policy</a>
-      <br>
-      Apache Hudi is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the <a href="http://incubator.apache.org/">Apache Incubator</a>.
-      Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have
-      stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a
-      reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
-    </p>
-  </div>
-</div>
\ No newline at end of file
diff --git a/docs-tmp/_includes/head.html b/docs-tmp/_includes/head.html
deleted file mode 100644
index 128f2f2..0000000
--- a/docs-tmp/_includes/head.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<meta charset="utf-8">
-
-{% include seo.html %}
-
-<!--<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">-->
-
-<!-- https://t.co/dKP3o1e -->
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
-
-<script>
-  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
-</script>
-
-<!-- For all browsers -->
-<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
-
-<!--[if IE]>
-  <style>
-    /* old IE unsupported flexbox fixes */
-    .greedy-nav .site-title {
-      padding-right: 3em;
-    }
-    .greedy-nav button {
-      position: absolute;
-      top: 0;
-      right: 0;
-      height: 100%;
-    }
-  </style>
-<![endif]-->
-
-{% if site.head_scripts %}
-  {% for script in site.head_scripts %}
-    {% if script contains "://" %}
-      {% capture script_path %}{{ script }}{% endcapture %}
-    {% else %}
-      {% capture script_path %}{{ script | relative_url }}{% endcapture %}
-    {% endif %}
-    <script src="{{ script_path }}"></script>
-  {% endfor %}
-{% endif %}
-
-<link rel="icon" type="image/x-icon" href="/assets/images/favicon.ico">
-<link rel="stylesheet" href="/assets/css/font-awesome.min.css">
diff --git a/docs-tmp/_includes/masthead.html b/docs-tmp/_includes/masthead.html
deleted file mode 100644
index f8c2823..0000000
--- a/docs-tmp/_includes/masthead.html
+++ /dev/null
@@ -1,51 +0,0 @@
-{% if site.logo contains "://" %}
-  {% capture logo_path %}{{ site.logo }}{% endcapture %}
-{% else %}
-  {% capture logo_path %}{{ site.logo }}{% endcapture %}
-{% endif %}
-
-<div class="masthead">
-  <div class="masthead__inner-wrap" id="masthead__inner-wrap">
-    <div class="masthead__menu">
-      <nav id="site-nav" class="greedy-nav">
-        {% unless logo_path == empty %}
-          <a class="site-logo" href="{{ '/' | relative_url }}">
-              <div style="width: 150px; height: 40px">
-
-              </div>
-<!--            <img src="{{ logo_path | relative_url }}" alt="">-->
-<!--            {% if site.subtitle %}-->
-<!--            <span class="site-subtitle" style="font-size: 0.8em !important;">-->
-<!--              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ site.subtitle }}-->
-<!--            </span>-->
-<!--            {% endif %}-->
-          </a>
-        {% endunless %}
-        <a class="site-title" href="{{ '/' | relative_url }}">
-          {{ site.masthead_title | default: site.title }}
-        </a>
-        <ul class="visible-links">
-          {%- for link in site.data.navigation.main -%}
-            {%- if link.url contains '://' -%}
-              {%- assign url = link.url -%}
-              {%- assign target = "_blank" -%}
-            {%- else -%}
-              {%- assign url = link.url | relative_url -%}
-              {%- assign target = "_self" -%}
-            {%- endif -%}
-            <li class="masthead__menu-item">
-              <a href="{{ url }}" target="{{ target }}" {% if link.description %}title="{{ link.description }}"{% endif %}>{{ link.title }}</a>
-            </li>
-          {%- endfor -%}
-        </ul>
-        <button class="greedy-nav__toggle hidden" type="button">
-          <span class="visually-hidden">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle menu" }}</span>
-          <div class="navicon"></div>
-        </button>
-        <ul class="hidden-links hidden"></ul>
-      </nav>
-    </div>
-  </div>
-</div>
-<p class="notice--warning" style="margin: 0 !important; text-align: center !important;"><strong>Note:</strong> This site is work in progress, if you notice any issues, please <a target="_blank" href="https://issues.apache.org/jira/projects/HUDI/summary">file a jira</a>.
-  Click <a href="/"> here</a> back to old site.</p>
\ No newline at end of file
diff --git a/docs-tmp/_includes/nav_list b/docs-tmp/_includes/nav_list
deleted file mode 100644
index 23afcc6..0000000
--- a/docs-tmp/_includes/nav_list
+++ /dev/null
@@ -1,52 +0,0 @@
-{% assign navigation = site.data.navigation[include.nav] %}
-
-<nav class="nav__list">
-  {% if page.sidebar.title %}<h3 class="nav__title" style="padding-left: 0;">{{ page.sidebar.title }}</h3>{% endif %}
-  <input id="ac-toc" name="accordion-toc" type="checkbox" />
-  <label for="ac-toc">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle Menu" }}</label>
-  <ul class="nav__items">
-    {% for nav in navigation %}
-      <li>
-        {% if nav.url %}
-          {% if nav.url contains "://" %}
-            {% assign nav_url = nav.url %}
-          {% else %}
-            {% assign nav_url = nav.url | relative_url %}
-          {% endif %}
-          123
-          <a href="{{ nav_url }}"><span class="nav__sub-title">{{ nav.title }}</span></a>
-          <a href="{{ nav_url }}"><span class="nav__sub-title">{{ nav.title }}</span></a>
-        {% else %}
-          <span class="nav__sub-title">{{ nav.title }}</span>
-        {% endif %}
-
-        {% if nav.children != null %}
-        <ul>
-          {% for child in nav.children %}
-            {% comment %} internal/external URL check {% endcomment %}
-            {% if child.url contains "://" %}
-              {% assign child_url = child.url %}
-            {% else %}
-              {% assign child_url = child.url | relative_url %}
-            {% endif %}
-
-            {% comment %} set "active" class on current page {% endcomment %}
-            {% if child.url == page.url %}
-              {% assign active = "active" %}
-            {% else %}
-              {% assign active = "" %}
-            {% endif %}
-
-            {% if site.version contains "SNAPSHOT" %}
-              <li><a href="{{ child_url }}" class="{{ active }}">{{ child.title }}</a></li>
-            {% else %}
-              <li><a href="/versions/{{ site.version }}{{ child_url }}" class="{{ active }}">{{ child.title }}</a></li>
-            {% endif %}
-
-          {% endfor %}
-        </ul>
-        {% endif %}
-      </li>
-    {% endfor %}
-  </ul>
-</nav>
\ No newline at end of file
diff --git a/docs-tmp/_includes/quick_link.html b/docs-tmp/_includes/quick_link.html
deleted file mode 100644
index 71f9968..0000000
--- a/docs-tmp/_includes/quick_link.html
+++ /dev/null
@@ -1,39 +0,0 @@
-{% assign author = page.author | default: page.authors[0] | default: site.author %}
-{% assign author = site.data.authors[author] | default: author %}
-
-<div itemscope itemtype="https://schema.org/Person">
-
-  <div class="author__content">
-    {% if author.home %}
-      <a href="{{ author_link }}"><h3 class="author__name" itemprop="name">{{ author.name }}</h3></a>
-    {% else %}
-      <h3 class="author__name" itemprop="name">{{ author.name }}</h3>
-    {% endif %}
-    {% if author.bio %}
-      <div class="author__bio" itemprop="description">
-        {{ author.bio | markdownify }}
-      </div>
-    {% endif %}
-  </div>
-
-  <div class="author__urls-wrapper">
-    <ul class="author__urls social-icons">
-      {% if author.links %}
-        {% for link in author.links %}
-          {% if link.label and link.url %}
-
-            {%- if link.url contains '://' -%}
-              {%- assign url = link.url -%}
-              {%- assign target = "_blank" -%}
-            {%- else -%}
-              {%- assign url = link.url | relative_url -%}
-              {%- assign target = "_self" -%}
-            {%- endif -%}
-            <li><a href="{{ link.url }}" target="{{ target }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i> {{ link.label }}</a></li>
-
-          {% endif %}
-        {% endfor %}
-      {% endif %}
-    </ul>
-  </div>
-</div>
diff --git a/docs-tmp/_includes/scripts.html b/docs-tmp/_includes/scripts.html
deleted file mode 100644
index 97a7880..0000000
--- a/docs-tmp/_includes/scripts.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<script src="{{ '/assets/js/main.min.js' | relative_url }}"></script>
diff --git a/docs-tmp/_includes/seo.html b/docs-tmp/_includes/seo.html
deleted file mode 100644
index 700f575..0000000
--- a/docs-tmp/_includes/seo.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!-- begin _includes/seo.html -->
-{%- if site.url -%}
-  {%- assign seo_url = site.url | append: site.baseurl -%}
-{%- endif -%}
-{%- assign seo_url = seo_url | default: site.github.url -%}
-
-{% assign title_separator = site.title_separator | default: '-' | replace: '|', '&#124;' %}
-
-{%- if page.title -%}
-  {%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: "Apache Hudi" -%}
-{%- endif -%}
-
-{%- if seo_title -%}
-  {%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
-{%- endif -%}
-
-{% if page.canonical_url %}
-  {%- assign canonical_url = page.canonical_url %}
-{% else %}
-  {%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %}
-{% endif %}
-
-{%- assign seo_description = page.description | default: page.excerpt | default: site.description -%}
-{%- if seo_description -%}
-  {%- assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once -%}
-{%- endif -%}
-
-{%- assign author = page.author | default: page.authors[0] | default: site.author -%}
-{%- assign author = site.data.authors[author] | default: author -%}
-
-{%- if author.twitter -%}
-  {%- assign author_twitter = author.twitter | replace: "@", "" -%}
-{%- endif -%}
-
-{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image -%}
-{%- unless page_large_image contains '://' -%}
-  {%- assign page_large_image = page_large_image | absolute_url -%}
-{%- endunless -%}
-{%- assign page_large_image = page_large_image | escape -%}
-
-{%- assign page_teaser_image = page.header.teaser | default: site.og_image -%}
-{%- unless page_teaser_image contains '://' -%}
-  {%- assign page_teaser_image = page_teaser_image | absolute_url -%}
-{%- endunless -%}
-{%- assign page_teaser_image = page_teaser_image | escape -%}
-
-{%- assign site_og_image = site.og_image -%}
-{%- unless site_og_image contains '://' -%}
-  {%- assign site_og_image = site_og_image | absolute_url -%}
-{%- endunless -%}
-{%- assign site_og_image = site_og_image | escape -%}
-
-{%- if page.date -%}
-  {%- assign og_type = "article" -%}
-{%- else -%}
-  {%- assign og_type = "website" -%}
-{%- endif -%}
-
-<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
-<meta name="description" content="{{ seo_description }}">
-
-<meta property="og:type" content="{{ og_type }}">
-<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}">
-<meta property="og:site_name" content="{{ site.title }}">
-<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
-<meta property="og:url" content="{{ site.site_url }}{{ page.url }}">
-
-{% if page.excerpt %}
-  <meta property="og:description" content="{{ seo_description }}">
-{% endif %}
-
-{% if page_large_image %}
-  <meta property="og:image" content="{{ page_large_image }}">
-{% elsif page_teaser_image %}
-  <meta property="og:image" content="{{ page_teaser_image }}">
-{% endif %}
-
-{% if page.last_modified_at %}
-  <meta property="article:modified_time" content="{{ page.last_modified_at | date_to_xmlschema }}">
-{% endif %}
-
-{% if site.google_site_verification %}
-  <meta name="google-site-verification" content="{{ site.google_site_verification }}" />
-{% endif %}
-{% if site.bing_site_verification %}
-  <meta name="msvalidate.01" content="{{ site.bing_site_verification }}">
-{% endif %}
-{% if site.alexa_site_verification %}
-  <meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}">
-{% endif %}
-{% if site.yandex_site_verification %}
-  <meta name="yandex-verification" content="{{ site.yandex_site_verification }}">
-{% endif %}
-{% if site.naver_site_verification %}
-  <meta name="naver-site-verification" content="{{ site.naver_site_verification }}">
-{% endif %}
-<!-- end _includes/seo.html -->
diff --git a/docs-tmp/_includes/sidebar.html b/docs-tmp/_includes/sidebar.html
deleted file mode 100644
index 172f6b1..0000000
--- a/docs-tmp/_includes/sidebar.html
+++ /dev/null
@@ -1,30 +0,0 @@
-{% if page.quick_link or layout.quick_link or page.sidebar %}
-  <div class="sidebar sticky">
-
-  {% if page.quick_link or layout.quick_link %}
-    {% include quick_link.html %}
-  {% endif %}
-
-  {% if page.sidebar %}
-    {% for s in page.sidebar %}
-      {% if s.image %}
-        <img src=
-        {% if s.image contains "://" %}
-          "{{ s.image }}"
-        {% else %}
-          "{{ s.image | relative_url }}"
-        {% endif %}
-        alt="{% if s.image_alt %}{{ s.image_alt }}{% endif %}">
-      {% endif %}
-      {% if s.title %}<h3>{{ s.title }}</h3>{% endif %}
-      {% if s.text %}{{ s.text | markdownify }}{% endif %}
-      {% if s.nav %}{% include nav_list nav=s.nav %}{% endif %}
-    {% endfor %}
-
-
-    {% if page.sidebar.nav %}
-      {% include nav_list nav=page.sidebar.nav %}
-    {% endif %}
-  {% endif %}
-  </div>
-{% endif %}
\ No newline at end of file
diff --git a/docs-tmp/_includes/toc b/docs-tmp/_includes/toc
deleted file mode 100644
index 6423ccd..0000000
--- a/docs-tmp/_includes/toc
+++ /dev/null
@@ -1,7 +0,0 @@
-<aside class="sidebar__right">
-<nav class="toc" markdown="1">
-<header><h4 class="nav__title"><i class="fas fa-{{ include.icon | default: 'file-alt' }}"></i> {{ include.title | default: site.data.ui-text[site.locale].toc_label }}</h4></header>
-*  Auto generated table of contents
-{:toc .toc__menu}
-</nav>
-</aside>
\ No newline at end of file
diff --git a/docs-tmp/_includes/toc.html b/docs-tmp/_includes/toc.html
deleted file mode 100644
index 54ab8b0..0000000
--- a/docs-tmp/_includes/toc.html
+++ /dev/null
@@ -1,85 +0,0 @@
-{% capture tocWorkspace %}
-    {% comment %}
-        Version 1.0.5
-          https://github.com/allejo/jekyll-toc
-
-        "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
-
-        Usage:
-            {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
-
-        Parameters:
-            * html       (string) - the HTML of compiled markdown generated by kramdown in Jekyll
-
-        Optional Parameters:
-            * sanitize   (bool)   : false  - when set to true, the headers will be stripped of any HTML in the TOC
-            * class      (string) :   ''   - a CSS class assigned to the TOC
-            * id         (string) :   ''   - an ID to assigned to the TOC
-            * h_min      (int)    :   1    - the minimum TOC header level to use; any header lower than this value will be ignored
-            * h_max      (int)    :   6    - the maximum TOC header level to use; any header greater than this value will be ignored
-            * ordered    (bool)   : false  - when set to true, an ordered list will be outputted instead of an unordered list
-            * item_class (string) :   ''   - add custom class for each list item; has support for '%level%' placeholder, which is the current heading level
-            * baseurl    (string) :   ''   - add a base url to the TOC links for when your TOC is on another page than the actual content
-
-        Output:
-            An ordered or unordered list representing the table of contents of a markdown block. This snippet will only generate the table of contents and will NOT output the markdown given to it
-    {% endcomment %}
-
-    {% capture my_toc %}{% endcapture %}
-    {% assign orderedList = include.ordered | default: false %}
-    {% assign minHeader = include.h_min | default: 1 %}
-    {% assign maxHeader = include.h_max | default: 6 %}
-    {% assign nodes = include.html | split: '<h' %}
-    {% assign firstHeader = true %}
-
-    {% capture listModifier %}{% if orderedList %}1.{% else %}-{% endif %}{% endcapture %}
-
-    {% for node in nodes %}
-        {% if node == "" %}
-            {% continue %}
-        {% endif %}
-
-        {% assign headerLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
-
-        {% if headerLevel < minHeader or headerLevel > maxHeader %}
-            {% continue %}
-        {% endif %}
-
-        {% if firstHeader %}
-            {% assign firstHeader = false %}
-            {% assign minHeader = headerLevel %}
-        {% endif %}
-
-        {% assign indentAmount = headerLevel | minus: minHeader | add: 1 %}
-        {% assign _workspace = node | split: '</h' %}
-
-        {% assign _idWorkspace = _workspace[0] | split: 'id="' %}
-        {% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
-        {% assign html_id = _idWorkspace[0] %}
-
-        {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
-        {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
-
-        {% assign space = '' %}
-        {% for i in (1..indentAmount) %}
-            {% assign space = space | prepend: '    ' %}
-        {% endfor %}
-
-        {% unless include.item_class == blank %}
-            {% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %}
-        {% endunless %}
-
-        {% capture my_toc %}{{ my_toc }}
-{{ space }}{{ listModifier }} {{ listItemClass }} [{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% endcapture %}
-    {% endfor %}
-
-    {% if include.class %}
-        {% capture my_toc %}{:.{{ include.class }}}
-{{ my_toc | lstrip }}{% endcapture %}
-    {% endif %}
-
-    {% if include.id %}
-        {% capture my_toc %}{: #{{ include.id }}}
-{{ my_toc | lstrip }}{% endcapture %}
-    {% endif %}
-{% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }}
\ No newline at end of file
diff --git a/docs-tmp/_layouts/default.html b/docs-tmp/_layouts/default.html
deleted file mode 100644
index 36c69d6..0000000
--- a/docs-tmp/_layouts/default.html
+++ /dev/null
@@ -1,27 +0,0 @@
----
----
-
-<!doctype html>
-<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
-  <head>
-    {% include head.html %}
-  </head>
-
-  <body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}">
-    {% include browser-upgrade.html %}
-    {% include masthead.html %}
-
-    <div class="initial-content">
-      {{ content }}
-    </div>
-
-    <div class="page__footer">
-      <footer>
-        {% include footer.html %}
-      </footer>
-    </div>
-
-    {% include scripts.html %}
-
-  </body>
-</html>
\ No newline at end of file
diff --git a/docs-tmp/_layouts/home.html b/docs-tmp/_layouts/home.html
deleted file mode 100644
index bd03283..0000000
--- a/docs-tmp/_layouts/home.html
+++ /dev/null
@@ -1,98 +0,0 @@
----
-layout: home
----
-
-<!doctype html>
-<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
-  <head>
-    {% include head.html %}
-  </head>
-
-  <body class="layout--home">
-    {% include browser-upgrade.html %}
-    {% include masthead.html %}
-
-    <div class="page__hero--overlay" style="background-color: #079fca !important;">
-      <div class="wrapper" style="background-size: 480px;background-repeat: no-repeat; background-position: right center;  background-image: url('/assets/images/logo-big.png');">
-        <h1 id="page-title" class="page__title" itemprop="headline">
-          {{ page.title }}
-        </h1>
-
-        <p class="page__lead">{{ page.excerpt }}</p>
-        <p>
-          <a href="/newsite-content/docs/quick-start-guide.html" class="btn btn--light-outline btn--large"><i class="fa fa-paper-plane"></i> Get Started</a>
-        </p>
-      </div>
-    </div>
-
-    <div class="page__hero--overlay">
-      <div class="wrapper">
-        <h1 style="font-size: 1.953em">
-          Hudi Data Lakes
-        </h1>
-        <div class="archive__item-excerpt" style="font-size: 0.9em">
-          <p>Hudi brings stream processing to big data, providing fresh data while being an order of magnitude efficient over traditional batch processing.</p>
-        </div>
-        <div class="archive__item-teaser">
-          <img src="/assets/images/hudi-lake.png" style="display:block;margin-left:auto;margin-right:auto;width: auto">
-        </div>
-        <br>
-      </div>
-    </div>
-
-    <div class="page__hero--overlay" style="background-color: #f7f7f9">
-      <div class="wrapper">
-        <h1 style="font-size: 1.953em">
-          Hudi Features
-        </h1>
-        <div class="home-feature-item">
-          <table style="display: inline-table">
-            <tr>
-              <td><p>Upsert support with fast, pluggable indexing.</p></td>
-              <td><p>Atomically publish data with rollback support.</p></td>
-            </tr>
-            <tr>
-              <td><p>Snapshot isolation between writer & queries.</p></td>
-              <td><p>Savepoints for data recovery.</p></td>
-            </tr>
-            <tr>
-              <td><p>Manages file sizes, layout using statistics.</p></td>
-              <td><p>Async compaction of row & columnar data.</p></td>
-            </tr>
-            <tr>
-              <td><p>Timeline metadata to track lineage.</p></td>
-              <td></td>
-            </tr>
-          </table>
-        </div>
-        <br>
-      </div>
-    </div>
-
-    <div class="page__hero--overlay">
-      <div class="wrapper">
-        <h1 style="font-size: 1.953em">
-          Hudi Users
-        </h1>
-        <div class="home-power-items">
-
-          {% for pi in page.power_items %}
-            <div class="power-item"><img src="{{ pi.img_path }}"></div>
-          {% endfor %}
-
-        </div>
-        <p style="padding: 0 !important; margin: 0 !important;">
-          <a href="/newsite-content/docs/quick-start-guide.html" class="btn btn--light-outline btn--large" style="background-color: #55abce"><i class="fa fa-paper-plane"></i> Get Started</a>
-        </p>
-      </div>
-    </div>
-
-    <div class="page__footer" style="margin-top: 0px !important;">
-      <footer>
-        {% include footer.html %}
-      </footer>
-    </div>
-    {% include scripts.html %}
-
-  </body>
-</html>
\ No newline at end of file
diff --git a/docs-tmp/_layouts/posts.html b/docs-tmp/_layouts/posts.html
deleted file mode 100644
index 3c5b5c3..0000000
--- a/docs-tmp/_layouts/posts.html
+++ /dev/null
@@ -1,40 +0,0 @@
----
-layout: default
----
-
-{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
-{% include page__hero.html %}
-{% elsif page.header.video.id and page.header.video.provider %}
-{% include page__hero_video.html %}
-{% endif %}
-
-{% if page.url != "/" and site.breadcrumbs %}
-{% unless paginator %}
-{% include breadcrumbs.html %}
-{% endunless %}
-{% endif %}
-
-<div id="main" role="main">
-  {% include sidebar.html %}
-
-  <div class="archive">
-    {% unless page.header.overlay_color or page.header.overlay_image %}
-    <h1 id="page-title" class="page__title">{{ page.title }}</h1>
-    {% endunless %}
-    {% assign postsByYear = site.posts | group_by_exp: 'post', 'post.date | date: "%Y"' %}
-    {% for year in postsByYear %}
-    <section id="{{ year.name }}" class="taxonomy__section">
-      <h2 class="archive__subtitle">{{ year.name }}</h2>
-      <div class="entries-{{ page.entries_layout | default: 'list' }}">
-        {% for post in year.items %}
-        {% include archive-single.html type=page.entries_layout %}
-        {% endfor %}
-      </div>
-    </section>
-    {% endfor %}
-    <a href="#masthead__inner-wrap" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} &uarr;</a>
-  </div>
-</div>
-
-
-
diff --git a/docs-tmp/_layouts/releases.html b/docs-tmp/_layouts/releases.html
deleted file mode 100644
index 96eb55b..0000000
--- a/docs-tmp/_layouts/releases.html
+++ /dev/null
@@ -1,45 +0,0 @@
----
-layout: default
----
-
-<div id="main" role="main">
-  {% include sidebar.html %}
-
-  <article class="page" itemscope itemtype="https://schema.org/CreativeWork">
-
-    <div class="page__inner-wrap">
-      {% unless page.header.overlay_color or page.header.overlay_image %}
-        <header>
-          {% if page.title %}<h1 id="page-title" class="page__title" itemprop="headline">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %}
-        </header>
-      {% endunless %}
-
-      <section class="page__content releases" itemprop="text">
-        {% if page.toc %}
-        <aside class="sidebar__right sticky">
-          <nav class="toc">
-            <header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: site.data.ui-text[site.locale].toc_label | default: "On this page" }}</h4></header>
-            {% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" %}
-          </nav>
-        </aside>
-        {% else %}
-        <style>
-          .page {
-            padding-right: 0 !important;
-          }
-        </style>
-        {% endif %}
-        {{ content }}
-        {% if page.link %}<div><a href="{{ page.link }}" class="btn btn--primary">{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}</a></div>{% endif %}
-      </section>
-
-      <a href="#masthead__inner-wrap" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} &uarr;</a>
-
-      {% if page.nation %}
-      {% include post_pagination.html %}
-      {% endif %}
-
-    </div>
-  </article>
-
-</div>
diff --git a/docs-tmp/_layouts/single.html b/docs-tmp/_layouts/single.html
deleted file mode 100644
index 73fa781..0000000
--- a/docs-tmp/_layouts/single.html
+++ /dev/null
@@ -1,46 +0,0 @@
----
-layout: default
----
-
-<div id="main" role="main">
-  {% include sidebar.html %}
-
-  <article class="page" itemscope itemtype="https://schema.org/CreativeWork">
-
-    <div class="page__inner-wrap">
-      {% unless page.header.overlay_color or page.header.overlay_image %}
-        <header>
-          {% if page.title %}<h1 id="page-title" class="page__title" itemprop="headline">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %}
-        </header>
-      {% endunless %}
-
-      <section class="page__content" itemprop="text">
-        {% if page.toc %}
-        <aside class="sidebar__right sticky">
-          <nav class="toc">
-            <header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: site.data.ui-text[site.locale].toc_label | default: "On this page" }}</h4></header>
-            {% include toc.html sanitize=true html=content h_min=1 h_max=4 class="toc__menu" %}
-          </nav>
-        </aside>
-        {% else %}
-          <style>
-            .page {
-              padding-right: 0 !important;
-            }
-          </style>
-        {% endif %}
-        {{ content }}
-      </section>
-
-      <a href="#masthead__inner-wrap" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} &uarr;</a>
-
-
-      {% if page.nation %}
-      {% include post_pagination.html %}
-      {% endif %}
-
-    </div>
-
-  </article>
-
-</div>
diff --git a/docs-tmp/_pages/404.md b/docs-tmp/_pages/404.md
deleted file mode 100644
index 9515d54..0000000
--- a/docs-tmp/_pages/404.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: "Page Not Found"
-excerpt: "Page not found. Your pixels are in another canvas."
-permalink: /404.html
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-Sorry, the page you were trying to view does not exist.
diff --git a/docs-tmp/_pages/activity.md b/docs-tmp/_pages/activity.md
deleted file mode 100644
index 0312cfd..0000000
--- a/docs-tmp/_pages/activity.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Activities"
-permalink: /activity
-layout: posts
-last_modified_at: 2019-12-30T15:59:57-04:00
----
diff --git a/docs-tmp/_pages/community.md b/docs-tmp/_pages/community.md
deleted file mode 100644
index 34e639e..0000000
--- a/docs-tmp/_pages/community.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-permalink: /community
-title: "Community"
-toc: true
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-## Engage with us
-
-There are several ways to get in touch with the Hudi community.
-
-| When? | Channel to use |
-|-------|--------|
-| For any general questions, user support, development discussions | Dev Mailing list ([Subscribe](mailto:dev-subscribe@hudi.apache.org), [Unsubscribe](mailto:dev-unsubscribe@hudi.apache.org), [Archives](https://lists.apache.org/list.html?dev@hudi.apache.org)). Empty email works for subscribe/unsubscribe. Please use [gists](https://gist.github.com) to share code/stacktraces on the email. |
-| For reporting bugs or issues or discover known issues | Please use [ASF Hudi JIRA](https://issues.apache.org/jira/projects/HUDI/summary). See [#here](#accounts) for access |
-| For quick pings & 1-1 chats | Join our [slack group](https://join.slack.com/t/apache-hudi/signup). In case your mail domain is not there in pre-approved list for joining slack group, please check out the [github issue](https://github.com/apache/incubator-hudi/issues/143) |
-| For proposing large features, changes | Start a RFC. Instructions [here](https://cwiki.apache.org/confluence/display/HUDI/RFC+Process).
- See [#here](#accounts) for wiki access |
-| For stream of commits, pull requests etc | Commits Mailing list ([Subscribe](mailto:commits-subscribe@hudi.apache.org), [Unsubscribe](mailto:commits-unsubscribe@hudi.apache.org), [Archives](https://lists.apache.org/list.html?commits@hudi.apache.org)) |
-
-If you wish to report a security vulnerability, please contact [security@apache.org](mailto:security@apache.org).
-Apache Hudi follows the typical Apache vulnerability handling [process](https://apache.org/security/committers.html#vulnerability-handling).
-
-## Contributing
-
-Apache Hudi community welcomes contributions from anyone!
-
-Here are few ways, you can get involved.
-
- - Ask (and/or) answer questions on our support channels listed above.
- - Review code or RFCs
- - Help improve documentation
- - Author blogs on our wiki
- - Testing; Improving out-of-box experience by reporting bugs
- - Share new ideas/directions to pursue or propose a new RFC
- - Contributing code to the project ([newbie JIRAs](https://issues.apache.org/jira/issues/?jql=project+%3D+HUDI+AND+component+%3D+newbie))
-
-## Become a Committer
-
-We are always looking for strong contributors, who can become [committers](https://www.apache.org/dev/committers.html) on the project. 
-Committers are chosen by a majority vote of the Apache Hudi [PMC](https://www.apache.org/foundation/how-it-works.html#pmc-members), after a discussion on their candidacy based on the following criteria (not exclusive/comprehensive).
-
- - Embodies the ASF model code of [conduct](https://www.apache.org/foundation/policies/conduct.html)
- - Has made significant technical contributions such as submitting PRs, filing bugs, testing, benchmarking, authoring RFCs, providing feedback/code reviews (+ more).
- - Has helped the community over a few months, by answering questions on support channels above and triaging issues/jiras.
- - Demonstrates clear code/design ownership of a component or code area (eg: Delta Streamer, Hive/Presto Integration etc).
- - Brought thought leadership and new ideas into the project and evangelized them with the community via conference talks, blog posts.
- - Great citizenship in helping with all peripheral (but very critical) work like site maintenance, wiki/jira cleanups and so on.
- - Proven commitment to the project by way of upholding all agreed upon processes, conventions and principles of the community.
-
-### The Committers
-
-| Image                                                        | Name                                                         | Role            | Apache ID    |
-| ------------------------------------------------------------ | ------------------------------------------------------------ | --------------- | ------------ |
-| <img src="https://avatars.githubusercontent.com/alunarbeach" style="max-width: 100px" alt="alunarbeach" align="middle" /> | [Anbu Cheeralan](https://github.com/alunarbeach)             | PPMC, Committer | anchee       |
-| <img src="https://avatars.githubusercontent.com/bhasudha" style="max-width: 100px" alt="bhasudha" align="middle" /> | [Bhavani Sudha](https://github.com/bhasudha)                 | Committer       | bhavanisudha |
-| <img src="https://avatars.githubusercontent.com/bvaradar" style="max-width: 100px" alt="bvaradar" align="middle" /> | [Balaji Varadarajan](https://github.com/bvaradar)            | PPMC, Committer | vbalaji      |
-| <img src="https://avatars.githubusercontent.com/kishoreg" style="max-width: 100px" alt="kishoreg" align="middle" /> | [Kishore Gopalakrishna](https://github.com/kishoreg)         | PPMC, Committer | kishoreg     |
-| <img src="https://avatars.githubusercontent.com/leesf" style="max-width: 100px" alt="leesf" align="middle" /> | [Shaofeng Li](https://github.com/leesf)                      | Committer       | leesf        |
-| <img src="https://avatars.githubusercontent.com/lresende" style="max-width: 100px" alt="lresende" align="middle" /> | [Luciano Resende](https://github.com/lresende)               | PPMC, Committer | lresende     |
-| <img src="https://avatars.githubusercontent.com/n3nash" style="max-width: 100px" alt="n3nash" align="middle" /> | [Nishith Agarwal](https://github.com/n3nash)                 | PPMC, Committer | nagarwal     |
-| <img src="https://avatars.githubusercontent.com/prasannarajaperumal" style="max-width: 100px" alt="prasannarajaperumal" align="middle" /> | [Prasanna Rajaperumal](https://github.com/prasannarajaperumal) | PPMC, Committer | prasanna     |
-| <img src="https://avatars.githubusercontent.com/smarthi" style="max-width: 100px" alt="smarthi" align="middle" /> | [Suneel Marthi](https://github.com/smarthi)                  | PPMC, Committer | smarthi      |
-| <img src="https://avatars.githubusercontent.com/tweise" style="max-width: 100px" alt="tweise" align="middle" /> | [Thomas Weise](https://github.com/tweise)                    | PPMC, Committer | thw          |
-| <img src="https://avatars.githubusercontent.com/vinothchandar" style="max-width: 100px" alt="vinothchandar" align="middle" /> | [vinoth chandar](https://github.com/vinothchandar)           | PPMC, Committer | vinoth       |
-| <img src="https://avatars.githubusercontent.com/yanghua" style="max-width: 100px" alt="yanghua" /> | [vinoyang](https://github.com/yanghua)                       | Committer       | vinoyang     |
-| <img src="https://avatars.githubusercontent.com/zqureshi" alt="zqureshi" style="max-width: 100px;" align="middle" /> | [Zeeshan Qureshi](https://github.com/zqureshi)               | PPMC, Committer | zqureshi     |
-
-
-## Code Contributions
-
-Useful resources for contributing can be found under the "Quick Links" left menu.
-Specifically, please refer to the detailed [contribution guide](contributing.html).
-
-## Accounts
-
-It's useful to obtain few accounts to be able to effectively contribute to Hudi.
- 
- - Github account is needed to send pull requests to Hudi
- - Sign-up/in to the Apache [JIRA](https://issues.apache.org/jira). Then please email the dev mailing list with your username, asking to be added as a contributor to the project. This enables you to assign/be-assigned tickets and comment on them. 
- - Sign-up/in to the Apache [cWiki](https://cwiki.apache.org/confluence/signup.action), to be able to contribute to the wiki pages/RFCs. 
\ No newline at end of file
diff --git a/docs-tmp/_pages/contributing.md b/docs-tmp/_pages/contributing.md
deleted file mode 100644
index fe3872c..0000000
--- a/docs-tmp/_pages/contributing.md
+++ /dev/null
@@ -1,165 +0,0 @@
----
-title: Developer Setup
-keywords: hudi, ide, developer, setup
-permalink: /contributing
-toc: true
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-## Pre-requisites
-
-To contribute code, you need
-
- - a GitHub account
- - a Linux (or) macOS development environment with Java JDK 8, Apache Maven (3.x+) installed
- - [Docker](https://www.docker.com/) installed for running demo, integ tests or building website
- - for large contributions, a signed [Individual Contributor License
-   Agreement](https://www.apache.org/licenses/icla.pdf) (ICLA) to the Apache
-   Software Foundation (ASF).
- - (Recommended) Create an account on [JIRA](https://issues.apache.org/jira/projects/HUDI/summary) to open issues/find similar issues.
- - (Recommended) Join our dev mailing list & slack channel, listed on [community](community.html) page.
-
-
-## IDE Setup
-
-To contribute, you would need to do the following
- 
- - Fork the Hudi code on Github & then clone your own fork locally. Once cloned, we recommend building as per instructions on [quickstart](/newsite-content/docs/quick-start-guide.html)
- - [Recommended] We have embraced the code style largely based on [google format](https://google.github.io/styleguide/javaguide.html). Please setup your IDE with style files from [here](https://github.com/apache/incubator-hudi/tree/master/style).
-These instructions have been tested on IntelliJ. 
- - [Recommended] Set up the [Save Action Plugin](https://plugins.jetbrains.com/plugin/7642-save-actions) to auto format & organize imports on save. The Maven Compilation life-cycle will fail if there are checkstyle violations.
- - [Optional] If needed, add spark jars to the classpath of your module in Intellij by following the steps from [here](https://stackoverflow.com/questions/1051640/correct-way-to-add-external-jars-lib-jar-to-an-intellij-idea-project). 
-
-## Accounts and Permissions
-
- - [Hudi issue tracker (JIRA)](https://issues.apache.org/jira/projects/HUDI/issues):
-   Anyone can access it and browse issues. Anyone can register an account and login
-   to create issues or add comments. Only contributors can be assigned issues. If
-   you want to be assigned issues, a PMC member can add you to the project contributor
-   group.  Email the dev mailing list to ask to be added as a contributor, and include your ASF Jira username.
-
- - [Hudi Wiki Space](https://cwiki.apache.org/confluence/display/HUDI):
-   Anyone has read access. If you wish to contribute changes, please create an account and
-   request edit access on the dev@ mailing list (include your Wiki account user ID).
-
- - Pull requests can only be merged by a HUDI committer, listed [here](https://incubator.apache.org/projects/hudi.html)
-
- - [Voting on a release](https://www.apache.org/foundation/voting.html): Everyone can vote.
-   Only Hudi PMC members should mark their votes as binding.
-
-## Life of a Contributor
-
-This document details processes and procedures we follow to make contributions to the project and take it forward. 
-If you are looking to ramp up into the project as a contributor, we highly encourage you to read this guide in full, familiarize yourself with the workflow 
-and more importantly also try to improve the process along the way as well. 
-
-### Filing JIRAs
-
- - Hudi uses JIRA to manage issues. First, familiarize yourself with the various [components](https://issues.apache.org/jira/projects/HUDI/components) against which issues are filed in Hudi.
- - Make an attempt to find an existing JIRA, that may solve the same issue you are reporting. When in doubt, you can always email the mailing list so that the community can provide early feedback, 
-   point out any similar JIRAs or RFCs. 
- - Try to gauge whether this JIRA needs an [RFC](https://cwiki.apache.org/confluence/display/HUDI/RFC+Process). As always, email the mailing list if unsure. If you need an RFC since the change is
-   large in scope, then please follow the wiki instructions to get the process rolling along.
- - While raising a new JIRA or updating an existing one, please make sure to do the following
-      - The issue `type` and `components` (when resolving the ticket) are set correctly
-      - If you intend to target the JIRA for a specific release, please fill in the `fix version(s)` field, with the [release number](https://issues.apache.org/jira/projects/HUDI/releases).
-      - Summary should be descriptive enough to catch the essence of the problem/ feature
-      - Where necessary, capture the version of Hudi/Spark/Hive/Hadoop/Cloud environments in the ticket
-      - Whenever possible, provide steps to reproduce via sample code or on the [docker setup](/newsite-content/docs/docker_demo.html)
- - All newly filed JIRAs are placed in the `NEW` state. If you are sure about this JIRA representing valid, scoped piece of work, please click `Accept Issue` to move it `OPEN` state
- - If you are not sure, please wait for a PMC/Committer to confirm/triage the issue and accept it. This process avoids contributors spending time on JIRAs with unclear scope.
- - Whenever possible, break down large JIRAs (e.g JIRAs resulting from an [RFC](https://cwiki.apache.org/confluence/display/HUDI/RFC+Process)) into `sub tasks` by clicking `More > create sub-task` from the parent JIRA , 
-   so that the community can contribute at large and help implement it much quickly. We recommend prefixing such JIRA titles with `[UMBRELLA]`
-
-### Claiming JIRAs
-
- - Finding a JIRA to work on 
-      - If you are new to the project, you can ramp up by picking up any issues tagged with the [newbie](https://issues.apache.org/jira/issues/?jql=project+%3D+HUDI+AND+component+%3D+newbie) component.
-      - If you want to work on some higher priority issue, then scout for Open issues against the next release on the JIRA, engage on unassigned/inactive JIRAs and offer help.
-      - Issues tagged with `Usability` , `Code Cleanup`, `Testing` components often present excellent opportunities to make a great impact.
- - If you don't have perms to self-assign JIRAs, please email the dev mailing list with your JIRA id and a small intro for yourself. We'd be happy to add you as a contributor.
- - As courtesy, if you are unable to continue working on a JIRA, please move it back to "OPEN" state and un-assign yourself.
-      - If a JIRA or its corresponding pull request has been inactive for a week, awaiting feedback from you, PMC/Committers could choose to re-assign them to another contributor.
-      - Such re-assignment process would be communicated over JIRA/GitHub comments, checking with the original contributor on his/her intent to continue working on the issue.
-      - You can also contribute by helping others contribute. So, if you don't have cycles to work on a JIRA and another contributor offers help, take it!
-
-### Contributing Code
-
- - Once you finalize on a project/task, please open a new JIRA or assign an existing one to yourself. 
-      - Almost all PRs should be linked to a JIRA. It's always good to have a JIRA upfront to avoid duplicating efforts.
-      - If the changes are minor, then `[MINOR]` prefix can be added to Pull Request title without a JIRA. 
-      - But, you may be asked to file a JIRA, if reviewer deems it necessary
- - Before you begin work,
-      - Claim the JIRA using the process above and assign the JIRA to yourself.
-      - Click "Start Progress" on the JIRA, which tells everyone that you are working on the issue actively.
- - [Optional] Familiarize yourself with internals of Hudi using content on this page, as well as [wiki](https://cwiki.apache.org/confluence/display/HUDI)
- - Make your code change
-   - Every source file needs to include the Apache license header. Every new dependency needs to have an 
-     open source license [compatible](https://www.apache.org/legal/resolved.html#criteria) with Apache.
-   - If you are re-using code from another apache/open-source project, licensing needs to be compatible and attribution added to `LICENSE` file
-   - Please DO NOT copy paste any code from StackOverflow or other online sources, since their license attribution would be unclear. Author them yourself!
-   - Get existing tests to pass using `mvn clean install -DskipITs`
-   - Add adequate tests for your new functionality
-   - For involved changes, it's best to also run the entire integration test suite using `mvn clean install`
-   - For website changes, please build the site locally & test navigation, formatting & links thoroughly
-   - If your code change changes some aspect of documentation (e.g new config, default value change), 
-     please ensure there is another PR to [update the docs](https://github.com/apache/incubator-hudi/blob/asf-site/docs/README.md) as well.
- - Sending a Pull Request
-   - Format commit and the pull request title like `[HUDI-XXX] Fixes bug in Spark Datasource`, 
-     where you replace `HUDI-XXX` with the appropriate JIRA issue. 
-   - Please ensure your commit message body is descriptive of the change. Bulleted summary would be appreciated.
-   - Push your commit to your own fork/branch & create a pull request (PR) against the Hudi repo.
-   - If you don't hear back within 3 days on the PR, please send an email to the dev @ mailing list.
-   - Address code review comments & keep pushing changes to your fork/branch, which automatically updates the PR
-   - Before your change can be merged, it should be squashed into a single commit for cleaner commit history.
- - Finally, once your pull request is merged, make sure to `Close` the JIRA.
-
-### Reviewing Code/RFCs
-
- - All pull requests would be subject to code reviews, from one or more of the PMC/Committers. 
- - Typically, each PR will get an "Assignee" based on their area of expertise, who will work with you to land the PR.
- - Code reviews are vital, but also often time-consuming for everyone involved. Below are some principles which could help align us better.
-   - Reviewers need to provide actionable, concrete feedback that states what needs to be done to get the PR closer to landing.
-   - Reviewers need to make it explicit, which of the requested changes would block the PR vs good-to-dos.
-   - Both contributors/reviewers need to keep an open mind and ground themselves to making the most technically sound argument.
-   - If progress is hard, please involve another PMC member/Committer to share another perspective.
-   - Staying humble and eager to learn, goes a long way in ensuring these reviews are smooth.
-
-### Suggest Changes
-
-We welcome new ideas and suggestions to improve the project, along any dimensions - management, processes, technical vision/direction. To kick start a discussion on the mailing thread
-to effect change and source feedback, start a new email thread with the `[DISCUSS]` prefix and share your thoughts. If your proposal leads to a larger change, then it may be followed up
-by a [vote](https://www.apache.org/foundation/voting.html) by a PMC member or others (depending on the specific scenario). 
-For technical suggestions, you can also leverage [our RFC Process](https://cwiki.apache.org/confluence/display/HUDI/RFC+Process) to outline your ideas in greater detail.
-
-
-## Releases
-
- - Apache Hudi community plans to do minor version releases every 6 weeks or so.
- - If your contribution merged onto the `master` branch after the last release, it will become part of the next release.
- - Website changes are regenerated on-demand basis (until automation in place to reflect immediately)
-
-## Communication
-
-All communication is expected to align with the [Code of Conduct](https://www.apache.org/foundation/policies/conduct).
-Discussion about contributing code to Hudi happens on the [dev@ mailing list](community.html). Introduce yourself!
-
-## Code & Project Structure
-
-  * `docker` : Docker containers used by demo and integration tests. Brings up a mini data ecosystem locally
-  * `hudi-cli` : CLI to inspect, manage and administer datasets
-  * `hudi-client` : Spark client library to take a bunch of inserts + updates and apply them to a Hoodie table
-  * `hudi-common` : Common classes used across modules
-  * `hudi-hadoop-mr` : InputFormat implementations for ReadOptimized, Incremental, Realtime views
-  * `hudi-hive` : Manage hive tables off Hudi datasets and houses the HiveSyncTool
-  * `hudi-integ-test` : Longer running integration test processes
-  * `hudi-spark` : Spark datasource for writing and reading Hudi datasets. Streaming sink.
-  * `hudi-utilities` : Houses tools like DeltaStreamer, SnapshotCopier
-  * `packaging` : Poms for building out bundles for easier drop in to Spark, Hive, Presto, Utilities
-  * `style`  : Code formatting, checkstyle files
-
-
-## Website
-
-[Apache Hudi site](https://hudi.apache.org) is hosted on a special `asf-site` branch. Please follow the `README` file under `docs` on that branch for
-instructions on making changes to the website.
\ No newline at end of file
diff --git a/docs-tmp/_pages/index.md b/docs-tmp/_pages/index.md
deleted file mode 100644
index 1f57a65..0000000
--- a/docs-tmp/_pages/index.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-layout: home
-permalink: /
-title: Welcome to Apache Hudi !
-excerpt: >
-  Apache Hudi ingests & manages storage of large analytical datasets over DFS (hdfs or cloud stores).<br />
-  <small><a href="https://github.com/apache/incubator-hudi/releases/tag/release-0.5.0-incubating" target="_blank">Latest release 0.5.0-incubating</a></small>
-power_items:
-  - img_path: /assets/images/powers/aws.jpg
-  - img_path: /assets/images/powers/emis.jpg
-  - img_path: /assets/images/powers/uber.png
-  - img_path: /assets/images/powers/yield.png
-  - img_path: /assets/images/powers/qq.png
-  - img_path: /assets/images/powers/tongcheng.png
-  - img_path: /assets/images/powers/alibaba.png
-  - img_path: /assets/images/powers/yotpo.png
-  - img_path: /assets/images/powers/kyligence.png
-  - img_path: /assets/images/powers/tathastu.png
-  - img_path: /assets/images/powers/shunfeng.png
-  - img_path: /assets/images/powers/lingyue.png
----
\ No newline at end of file
diff --git a/docs-tmp/_pages/releases.md b/docs-tmp/_pages/releases.md
deleted file mode 100644
index 8621733..0000000
--- a/docs-tmp/_pages/releases.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: "Releases"
-permalink: /releases
-layout: releases
-toc: true
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-## [Release 0.5.0-incubating](https://github.com/apache/incubator-hudi/releases/tag/release-0.5.0-incubating)
-
-### Download Information
- * Source Release : [Apache Hudi(incubating) 0.5.0-incubating Source Release](https://www.apache.org/dist/incubator/hudi/0.5.0-incubating/hudi-0.5.0-incubating.src.tgz) ([asc](https://www.apache.org/dist/incubator/hudi/0.5.0-incubating/hudi-0.5.0-incubating.src.tgz.asc), [sha512](https://www.apache.org/dist/incubator/hudi/0.5.0-incubating/hudi-0.5.0-incubating.src.tgz.sha512))
- * Apache Hudi (incubating) jars corresponding to this release is available [here](https://repository.apache.org/#nexus-search;quick~hudi)
-
-### Release Highlights
- * Package and format renaming from com.uber.hoodie to org.apache.hudi (See migration guide section below)
- * Major redo of Hudi bundles to address class and jar version mismatches in different environments
- * Upgrade from Hive 1.x to Hive 2.x for compile time dependencies - Hive 1.x runtime integration still works with a patch : See [the discussion thread](https://lists.apache.org/thread.html/48b3f0553f47c576fd7072f56bb0d8a24fb47d4003880d179c7f88a3@%3Cdev.hudi.apache.org%3E)
- * DeltaStreamer now supports continuous running mode with managed concurrent compaction
- * Support for Composite Keys as record key
- * HoodieCombinedInputFormat to scale huge hive queries running on Hoodie tables
-
-### Migration Guide for this release
- This is the first Apache release for Hudi (incubating). Prior to this release, Hudi Jars were published using "com.uber.hoodie" maven co-ordinates. We have a [migration guide](https://cwiki.apache.org/confluence/display/HUDI/Migration+Guide+From+com.uber.hoodie+to+org.apache.hudi)
-
-### Raw Release Notes
- The raw release notes are available [here](https://jira.apache.org/jira/secure/ReleaseNote.jspa?projectId=12322822&version=12346087)
-
-## [Release 0.4.7](https://github.com/apache/incubator-hudi/releases/tag/hoodie-0.4.7)
-
-### Release Highlights
-
- * Major releases with fundamental changes to filesystem listing & write failure handling
- * Introduced the first version of HoodieTimelineServer that runs embedded on the driver
- * With all executors fetching filesystem listing via RPC to timeline server, drastically reduced filesystem listing!
- * Failing concurrent write tasks are now handled differently to be robust against spark stage retries
- * Bug fixes/clean up around indexing, compaction
-
-### PR LIST
-
-- Skip Meta folder when looking for partitions. [#698](https://github.com/apache/incubator-hudi/pull/698)
-- HUDI-134 - Disable inline compaction for Hoodie Demo. [#696](https://github.com/apache/incubator-hudi/pull/696)
-- Default implementation for HBase index qps allocator. [#685](https://github.com/apache/incubator-hudi/pull/685)
-- Handle duplicate record keys across partitions. [#687](https://github.com/apache/incubator-hudi/pull/687)
-- Fix up offsets not available on leader exception. [#650](https://github.com/apache/incubator-hudi/pull/650)
diff --git a/docs-tmp/_pages/roadmap.md b/docs-tmp/_pages/roadmap.md
deleted file mode 100644
index cbb1755..0000000
--- a/docs-tmp/_pages/roadmap.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-permalink: /roadmap
-title: "Roadmap"
-last_modified_at: 2019-12-30T15:59:57-04:00
----
-
-Below is a depiction of what's to come and how its sequenced.
-
-## Big Picture
-
- - Fills a clear void in data ingestion, storage and processing!
- - Leads the convergence towards streaming style processing!
- - Brings transactional semantics to managing data 
- - Positioned to solve impending demand for scale & speed
- - Evolve as “de facto”, open, vendor neutral standard for data storage!
-
-
-## Roadmap 
-
-**ProTip:** This is a rough roadmap (non exhaustive list) of what's to come in each of the areas for Hudi.
-{: .notice--info}
-
-<figure>
-  <img src="{{ '/assets/images/roadmap.png' | relative_url }}" alt="bundle install in Terminal window">
-</figure>
-
diff --git a/docs-tmp/_posts/2016-12-30-strata-talk-2017.md b/docs-tmp/_posts/2016-12-30-strata-talk-2017.md
deleted file mode 100644
index 8af8f97..0000000
--- a/docs-tmp/_posts/2016-12-30-strata-talk-2017.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title:  "Connect with us at Strata San Jose March 2017"
-date: 2016-12-30
-permalink: /blog/strata.html
-link: /newsite-content/blog/strata.html
----
-
-We will be presenting Hudi & general concepts around how incremental processing works at Uber.
-Catch our talk **"Incremental Processing on Hadoop At Uber"**
-
diff --git a/docs-tmp/_posts/2019-01-18-asf-incubation.md b/docs-tmp/_posts/2019-01-18-asf-incubation.md
deleted file mode 100644
index 13512b7..0000000
--- a/docs-tmp/_posts/2019-01-18-asf-incubation.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: "Hudi entered Apache Incubator"
-date: 2019-01-18
-permalink: /blog/asf.html
-link: /newsite-content/blog/asf.html
----
-
-In the coming weeks, we will be moving in our new home on the Apache Incubator.
-
diff --git a/docs-tmp/_sass/hudi_style.scss b/docs-tmp/_sass/hudi_style.scss
deleted file mode 100644
index 22e7e71..0000000
--- a/docs-tmp/_sass/hudi_style.scss
+++ /dev/null
@@ -1,35 +0,0 @@
-
-/* Variables */
-@import "hudi_style/variables";
-
-/* Mixins and functions */
-@import "hudi_style/vendor/breakpoint/breakpoint";
-@include breakpoint-set("to ems", true);
-@import "hudi_style/vendor/magnific-popup/magnific-popup"; // Magnific Popup
-@import "hudi_style/vendor/susy/susy";
-@import "hudi_style/mixins";
-
-/* Core CSS */
-@import "hudi_style/reset";
-@import "hudi_style/base";
-@import "hudi_style/forms";
-@import "hudi_style/tables";
-@import "hudi_style/animations";
-
-/* Components */
-@import "hudi_style/buttons";
-@import "hudi_style/notices";
-@import "hudi_style/masthead";
-@import "hudi_style/navigation";
-@import "hudi_style/footer";
-@import "hudi_style/search";
-@import "hudi_style/syntax";
-
-/* Utility classes */
-@import "hudi_style/utilities";
-
-/* Layout specific */
-@import "hudi_style/page";
-@import "hudi_style/archive";
-@import "hudi_style/sidebar";
-@import "hudi_style/print";
diff --git a/docs-tmp/_sass/hudi_style/_animations.scss b/docs-tmp/_sass/hudi_style/_animations.scss
deleted file mode 100644
index 25ef77f..0000000
--- a/docs-tmp/_sass/hudi_style/_animations.scss
+++ /dev/null
@@ -1,21 +0,0 @@
-/* ==========================================================================
-   ANIMATIONS
-   ========================================================================== */
-
-@-webkit-keyframes intro {
-  0% {
-    opacity: 0;
-  }
-  100% {
-    opacity: 1;
-  }
-}
-
-@keyframes intro {
-  0% {
-    opacity: 0;
-  }
-  100% {
-    opacity: 1;
-  }
-}
\ No newline at end of file
diff --git a/docs-tmp/_sass/hudi_style/_archive.scss b/docs-tmp/_sass/hudi_style/_archive.scss
deleted file mode 100644
index 49c24c8..0000000
--- a/docs-tmp/_sass/hudi_style/_archive.scss
+++ /dev/null
@@ -1,447 +0,0 @@
-/* ==========================================================================
-   ARCHIVE
-   ========================================================================== */
-
-.archive {
-  margin-top: 1em;
-  margin-bottom: 2em;
-
-  @include breakpoint($large) {
-    float: right;
-    width: calc(100% - #{$right-sidebar-width-narrow});
-    //padding-right: $right-sidebar-width-narrow;
-  }
-
-  @include breakpoint($x-large) {
-    width: calc(100% - #{$right-sidebar-width-narrow});
-    //padding-right: $right-sidebar-width;
-  }
-}
-
-.archive__item {
-  position: relative;
-
-  a {
-    position: relative;
-    z-index: 10;
-  }
-
-  a[rel="permalink"] {
-    position: static;
-  }
-}
-
-.archive__subtitle {
-  margin: 1.414em 0 0;
-  padding-bottom: 0.5em;
-  font-size: $type-size-5;
-  color: $muted-text-color;
-  border-bottom: 1px solid $border-color;
-
-  + .list__item .archive__item-title {
-    margin-top: 0.5em;
-  }
-}
-
-.archive__item-title {
-  margin-bottom: 0.25em;
-  font-family: $sans-serif-narrow;
-  line-height: initial;
-  overflow: hidden;
-  text-overflow: ellipsis;
-
-  a[rel="permalink"]::before {
-    content: '';
-    position: absolute;
-    left: 0;
-    top: 0;
-    right: 0;
-    bottom: 0;
-  }
-
-  a + a {
-    opacity: 0.5;
-  }
-}
-
-/* remove border*/
-.page__content {
-  .archive__item-title {
-    margin-top: 1em;
-    border-bottom: none;
-  }
-}
-
-.archive__item-excerpt {
-  margin-top: 0;
-  font-size: $type-size-6;
-
-  & + p {
-    text-indent: 0;
-  }
-
-  a {
-    position: relative;
-  }
-}
-
-.archive__item-teaser {
-  position: relative;
-  border-radius: $border-radius;
-  overflow: hidden;
-
-  img {
-    width: 100%;
-  }
-}
-
-.archive__item-caption {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  margin: 0 auto;
-  padding: 2px 5px;
-  color: #fff;
-  font-family: $caption-font-family;
-  font-size: $type-size-8;
-  background: #000;
-  text-align: right;
-  z-index: 5;
-  opacity: 0.5;
-  border-radius: $border-radius 0 0 0;
-
-  @include breakpoint($large) {
-    padding: 5px 10px;
-  }
-
-  a {
-    color: #fff;
-    text-decoration: none;
-  }
-}
-
-/*
-   List view
-   ========================================================================== */
-
-.list__item {
-  .page__meta {
-    margin: 0 0 4px;
-    font-size: 0.6em;
-  }
-}
-
-/*
-   Grid view
-   ========================================================================== */
-
-.archive {
-  .grid__wrapper {
-    /* extend grid elements to the right */
-
-    @include breakpoint($large) {
-      margin-right: -1 * $right-sidebar-width-narrow;
-    }
-
-    @include breakpoint($x-large) {
-      margin-right: -1 * $right-sidebar-width;
-    }
-  }
-}
-
-.grid__item {
-  margin-bottom: 2em;
-
-  @include breakpoint($small) {
-    float: left;
-    width: span(5 of 10);
-
-    &:nth-child(2n + 1) {
-      clear: both;
-      margin-left: 0;
-    }
-
-    &:nth-child(2n + 2) {
-      clear: none;
-      margin-left: gutter(of 10);
-    }
-  }
-
-  @include breakpoint($medium) {
-    margin-left: 0; /* override margin*/
-    margin-right: 0; /* override margin*/
-    width: span(3 of 12);
-
-    &:nth-child(2n + 1) {
-      clear: none;
-    }
-
-    &:nth-child(4n + 1) {
-      clear: both;
-    }
-
-    &:nth-child(4n + 2) {
-      clear: none;
-      margin-left: gutter(1 of 12);
-    }
-
-    &:nth-child(4n + 3) {
-      clear: none;
-      margin-left: gutter(1 of 12);
-    }
-
-    &:nth-child(4n + 4) {
-      clear: none;
-      margin-left: gutter(1 of 12);
-    }
-  }
-
-  .page__meta {
-    margin: 0 0 4px;
-    font-size: 0.6em;
-  }
-
-  .archive__item-title {
-    margin-top: 0.5em;
-    font-size: $type-size-5;
-  }
-
-  .archive__item-excerpt {
-    display: none;
-
-    @include breakpoint($medium) {
-      display: block;
-      font-size: $type-size-6;
-    }
-  }
-
-  .archive__item-teaser {
-    @include breakpoint($small) {
-      max-height: 200px;
-    }
-
-    @include breakpoint($medium) {
-      max-height: 120px;
-    }
-  }
-}
-
-/*
-   Features
-   ========================================================================== */
-
-.feature__wrapper {
-  @include clearfix();
-  margin-bottom: 2em;
-  border-bottom: 1px solid $border-color;
-
-  .archive__item-title {
-    margin-bottom: 0;
-  }
-}
-
-.feature__item {
-  position: relative;
-  margin-bottom: 2em;
-  font-size: 1.125em;
-
-  @include breakpoint($small) {
-    float: left;
-    margin-bottom: 0;
-    width: span(4 of 12);
-
-    &:nth-child(3n + 1) {
-      clear: both;
-      margin-left: 0;
-    }
-
-    &:nth-child(3n + 2) {
-      clear: none;
-      margin-left: gutter(of 12);
-    }
-
-    &:nth-child(3n + 3) {
-      clear: none;
-      margin-left: gutter(of 12);
-    }
-
-    .feature__item-teaser {
-      max-height: 200px;
-      overflow: hidden;
-    }
-  }
-
-  .archive__item-body {
-    padding-left: gutter(1 of 12);
-    padding-right: gutter(1 of 12);
-  }
-
-  a.btn::before {
-    content: '';
-    position: absolute;
-    left: 0;
-    top: 0;
-    right: 0;
-    bottom: 0;
-  }
-
-  &--left {
-    position: relative;
-    float: left;
-    margin-left: 0;
-    margin-right: 0;
-    width: 100%;
-    clear: both;
-    font-size: 1.125em;
-
-    .archive__item {
-      float: left;
-    }
-
-    .archive__item-teaser {
-      margin-bottom: 2em;
-    }
-
-    a.btn::before {
-      content: '';
-      position: absolute;
-      left: 0;
-      top: 0;
-      right: 0;
-      bottom: 0;
-    }
-
-    @include breakpoint($small) {
-      .archive__item-teaser {
-        float: left;
-        width: span(5 of 12);
-      }
-
-      .archive__item-body {
-        float: right;
-        padding-left: gutter(0.5 of 12);
-        padding-right: gutter(1 of 12);
-        width: span(7 of 12);
-      }
-    }
-  }
-
-  &--right {
-    position: relative;
-    float: left;
-    margin-left: 0;
-    margin-right: 0;
-    width: 100%;
-    clear: both;
-    font-size: 1.125em;
-
-    .archive__item {
-      float: left;
-    }
-
-    .archive__item-teaser {
-      margin-bottom: 2em;
-    }
-
-    a.btn::before {
-      content: '';
-      position: absolute;
-      left: 0;
-      top: 0;
-      right: 0;
-      bottom: 0;
-    }
-
-    @include breakpoint($small) {
-      text-align: right;
-
-      .archive__item-teaser {
-        float: right;
-        width: span(5 of 12);
-      }
-
-      .archive__item-body {
-        float: left;
-        width: span(7 of 12);
-        padding-left: gutter(0.5 of 12);
-        padding-right: gutter(1 of 12);
-      }
-    }
-  }
-
-  &--center {
-    position: relative;
-    float: left;
-    margin-left: 0;
-    margin-right: 0;
-    width: 100%;
-    clear: both;
-    font-size: 1.125em;
-
-    .archive__item {
-      float: left;
-      width: 100%;
-    }
-
-    .archive__item-teaser {
-      margin-bottom: 2em;
-    }
-
-    a.btn::before {
-      content: '';
-      position: absolute;
-      left: 0;
-      top: 0;
-      right: 0;
-      bottom: 0;
-    }
-
-    @include breakpoint($small) {
-      text-align: center;
-
-      .archive__item-teaser {
-        margin: 0 auto;
-        width: span(5 of 12);
-      }
-
-      .archive__item-body {
-        margin: 0 auto;
-        width: span(7 of 12);
-      }
-    }
-  }
-}
-
-/* Place inside an archive layout */
-
-.archive {
-  .feature__wrapper {
-    .archive__item-title {
-      margin-top: 0.25em;
-      font-size: 1em;
-    }
-  }
-
-  .feature__item,
-  .feature__item--left,
-  .feature__item--center,
-  .feature__item--right {
-    font-size: 1em;
-  }
-}
-
-/*
-   Wide Pages
-   ========================================================================== */
-
-  .wide {
-  .archive {
-    @include breakpoint($large) {
-      padding-right: 0;
-    }
-
-    @include breakpoint($x-large) {
-      padding-right: 0;
-    }
-  }
-}
\ No newline at end of file
diff --git a/docs-tmp/_sass/hudi_style/_base.scss b/docs-tmp/_sass/hudi_style/_base.scss
deleted file mode 100644
index dd94cda..0000000
--- a/docs-tmp/_sass/hudi_style/_base.scss
+++ /dev/null
@@ -1,357 +0,0 @@
-/* ==========================================================================
-   BASE ELEMENTS
-   ========================================================================== */
-
-html {
-  /* sticky footer fix */
-  position: relative;
-  min-height: 100%;
-}
-
-body {
-  margin: 0;
-  padding: 0;
-  color: $text-color;
-  font-family: $global-font-family;
-  line-height: 1.5;
-
-  &.overflow--hidden {
-    /* when primary navigation is visible, the content in the background won't scroll */
-    overflow: hidden;
-  }
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 2em 0 0.5em;
-  line-height: 1.2;
-  font-family: $header-font-family;
-  font-weight: bold;
-}
-
-h1 {
-  margin-top: 0;
-  font-size: $type-size-3;
-}
-
-h2 {
-  font-size: $type-size-4;
-}
-
-h3 {
-  font-size: $type-size-5;
-}
-
-h4 {
-  font-size: $type-size-6;
-}
-
-h5 {
-  font-size: $type-size-6;
-}
-
-h6 {
-  font-size: $type-size-6;
-}
-
-small,
-.small {
-  font-size: $type-size-6;
-}
-
-p {
-  margin-bottom: 1.3em;
-}
-
-u,
-ins {
-  text-decoration: none;
-  border-bottom: 1px solid $text-color;
-  a {
-    color: inherit;
-  }
-}
-
-del a {
-  color: inherit;
-}
-
-/* reduce orphans and widows when printing */
-
-p,
-pre,
-blockquote,
-ul,
-ol,
-dl,
-figure,
-table,
-fieldset {
-  orphans: 3;
-  widows: 3;
-}
-
-/* abbreviations */
-
-abbr[title],
-abbr[data-original-title] {
-  text-decoration: none;
-  cursor: help;
-  border-bottom: 1px dotted $text-color;
-}
-
-/* blockquotes */
-
-blockquote {
-  margin: 2em 1em 2em 0;
-  padding-left: 1em;
-  padding-right: 1em;
-  font-style: italic;
-  border-left: 0.25em solid $primary-color;
-
-  cite {
-    font-style: italic;
-
-    &:before {
-      content: "\2014";
-      padding-right: 5px;
-    }
-  }
-}
-
-/* links */
-
-a {
-  &:focus {
-    @extend %tab-focus;
-  }
-
-  &:visited {
-    color: $link-color-visited;
-  }
-
-  &:hover {
-    color: $link-color-hover;
-    outline: 0;
-  }
-}
-
-/* buttons */
-
-button:focus {
-  @extend %tab-focus;
-}
-
-/* code */
-
-tt,
-code,
-kbd,
-samp,
-pre {
-  font-family: $monospace;
-}
-
-pre {
-  overflow-x: auto; /* add scrollbars to wide code blocks*/
-}
-
-p > code,
-a > code,
-li > code,
-figcaption > code,
-td > code {
-  padding-top: 0.1rem;
-  padding-bottom: 0.1rem;
-  font-size: 0.8em;
-  background: $code-background-color;
-  border-radius: $border-radius;
-
-  &:before,
-  &:after {
-    letter-spacing: -0.2em;
-    content: "\00a0"; /* non-breaking space*/
-  }
-}
-
-/* horizontal rule */
-
-hr {
-  display: block;
-  margin: 1em 0;
-  border: 0;
-  border-top: 1px solid $border-color;
-}
-
-/* lists */
-
-ul li,
-ol li {
-  margin-bottom: 0.5em;
-}
-
-li ul,
-li ol {
-  margin-top: 0.5em;
-}
-
-/*
-   Media and embeds
-   ========================================================================== */
-
-/* Figures and images */
-
-figure {
-  display: -webkit-box;
-  display: flex;
-  -webkit-box-pack: justify;
-  justify-content: space-between;
-  -webkit-box-align: start;
-  align-items: flex-start;
-  flex-wrap: wrap;
-  margin: 2em 0;
-
-  img,
-  iframe,
-  .fluid-width-video-wrapper {
-    margin-bottom: 1em;
-  }
-
-  img {
-    width: 100%;
-    border-radius: $border-radius;
-    -webkit-transition: $global-transition;
-    transition: $global-transition;
-  }
-
-  > a {
-    display: block;
-  }
-
-  &.half {
-    > a,
-    > img {
-      @include breakpoint($small) {
-        width: calc(50% - 0.5em);
-      }
-    }
-
-    figcaption {
-      width: 100%;
-    }
-  }
-
-  &.third {
-    > a,
-    > img {
-      @include breakpoint($small) {
-        width: calc(33.3333% - 0.5em);
-      }
-    }
-
-    figcaption {
-      width: 100%;
-    }
-  }
-}
-
-/* Figure captions */
-
-figcaption {
-  margin-bottom: 0.5em;
-  color: $muted-text-color;
-  font-family: $caption-font-family;
-  font-size: $type-size-6;
-
-  a {
-    -webkit-transition: $global-transition;
-    transition: $global-transition;
-
-    &:hover {
-      color: $link-color-hover;
-    }
-  }
-}
-
-/* Fix IE9 SVG bug */
-
-svg:not(:root) {
-  overflow: hidden;
-}
-
-/*
-   Navigation lists
-   ========================================================================== */
-
-/**
- * Removes margins, padding, and bullet points from navigation lists
- *
- * Example usage:
- * <nav>
- *    <ul>
- *      <li><a href="#link-1">Link 1</a></li>
- *      <li><a href="#link-2">Link 2</a></li>
- *      <li><a href="#link-3">Link 3</a></li>
- *    </ul>
- *  </nav>
- */
-
-nav {
-  ul {
-    margin: 0;
-    padding: 0;
-  }
-
-  li {
-    list-style: none;
-  }
-
-  a {
-    text-decoration: none;
-  }
-
-  /* override white-space for nested lists */
-  ul li,
-  ol li {
-    margin-bottom: 0;
-  }
-
-  li ul,
-  li ol {
-    margin-top: 0;
-  }
-}
-
-/*
-   Global animation transition
-   ========================================================================== */
-
-b,
-i,
-strong,
-em,
-blockquote,
-p,
-q,
-span,
-figure,
-img,
-h1,
-h2,
-header,
-input,
-a,
-tr,
-td,
-form button,
-input[type="submit"],
-.btn,
-.highlight,
-.archive__item-teaser {
-  -webkit-transition: $global-transition;
-  transition: $global-transition;
-}
diff --git a/docs-tmp/_sass/hudi_style/_buttons.scss b/docs-tmp/_sass/hudi_style/_buttons.scss
deleted file mode 100644
index 9ef60a8..0000000
--- a/docs-tmp/_sass/hudi_style/_buttons.scss
+++ /dev/null
@@ -1,97 +0,0 @@
-/* ==========================================================================
-   BUTTONS
-   ========================================================================== */
-
-/*
-   Default button
-   ========================================================================== */
-
-.btn {
-  /* default */
-  display: inline-block;
-  margin-bottom: 0.25em;
-  padding: 0.5em 1em;
-  font-family: $sans-serif;
-  font-size: $type-size-6;
-  font-weight: bold;
-  text-align: center;
-  text-decoration: none;
-  border-width: 0;
-  border-radius: $border-radius;
-  cursor: pointer;
-
-  .icon {
-    margin-right: 0.5em;
-  }
-
-  .icon + .hidden {
-    margin-left: -0.5em; /* override for hidden text*/
-  }
-
-  /* button colors */
-  $buttoncolors:
-  (primary, $primary-color),
-  (inverse, #fff),
-  (light-outline, transparent),
-  (success, $success-color),
-  (warning, $warning-color),
-  (danger, $danger-color),
-  (info, $info-color),
-  (facebook, $facebook-color),
-  (twitter, $twitter-color),
-  (linkedin, $linkedin-color);
-
-  @each $buttoncolor, $color in $buttoncolors {
-    &--#{$buttoncolor} {
-      @include yiq-contrasted($color);
-      @if ($buttoncolor == inverse) {
-        border: 1px solid $border-color;
-      }
-      @if ($buttoncolor == light-outline) {
-        border: 1px solid #fff;
-      }
-
-      &:visited {
-        @include yiq-contrasted($color);
-      }
-
-      &:hover {
-        @include yiq-contrasted(mix(#000, $color, 20%));
-      }
-    }
-  }
-
-  /* fills width of parent container */
-  &--block {
-    display: block;
-    width: 100%;
-
-    + .btn--block {
-      margin-top: 0.25em;
-    }
-  }
-
-  /* disabled */
-  &--disabled {
-    pointer-events: none;
-    cursor: not-allowed;
-    filter: alpha(opacity=65);
-    box-shadow: none;
-    opacity: 0.65;
-  }
-
-  /* extra large button */
-  &--x-large {
-    font-size: $type-size-4;
-  }
-
-  /* large button */
-  &--large {
-    font-size: $type-size-5;
-  }
-
-  /* small button */
-  &--small {
-    font-size: $type-size-7;
-  }
-}
\ No newline at end of file
diff --git a/docs-tmp/_sass/hudi_style/_footer.scss b/docs-tmp/_sass/hudi_style/_footer.scss
deleted file mode 100644
index 1ef5560..0000000
--- a/docs-tmp/_sass/hudi_style/_footer.scss
+++ /dev/null
@@ -1,86 +0,0 @@
-/* ==========================================================================
-   FOOTER
-   ========================================================================== */
-
-.page__footer {
-  @include clearfix;
-  float: left;
-  margin-left: 0;
-  margin-right: 0;
-  width: 100%;
-  clear: both;
-  margin-top: 3em;
-  color: $muted-text-color;
-  -webkit-animation: $intro-transition;
-  animation: $intro-transition;
-  -webkit-animation-delay: 0.45s;
-  animation-delay: 0.45s;
-  background-color: #f7f7f9;
-
-  footer {
-    @include clearfix;
-    margin-left: auto;
-    margin-right: auto;
-    margin-top: 2em;
-    max-width: 100%;
-    padding: 0 1em 2em;
-
-    @include breakpoint($x-large) {
-      max-width: $x-large;
-    }
-  }
-
-  a {
-    color: inherit;
-    text-decoration: none;
-
-    &:hover {
-      text-decoration: underline;
-    }
-  }
-
-  .fas,
-  .fab,
-  .far,
-  .fal {
-    color: $muted-text-color;
-  }
-}
-
-.page__footer-copyright {
-  font-family: $global-font-family;
-  font-size: $type-size-7;
-}
-
-.page__footer-follow {
-  ul {
-    margin: 0;
-    padding: 0;
-    list-style-type: none;
-  }
-
-  li {
-    display: inline-block;
-    padding-top: 5px;
-    padding-bottom: 5px;
-    font-family: $sans-serif-narrow;
-    font-size: $type-size-6;
-    text-transform: uppercase;
-  }
-
-  li + li:before {
-    content: "";
-    padding-right: 5px;
-  }
-
-  a {
-    padding-right: 10px;
-    font-weight: bold;
-  }
-
-  .social-icons {
-    a {
-      white-space: nowrap;
-    }
-  }
-}
diff --git a/docs-tmp/_sass/hudi_style/_forms.scss b/docs-tmp/_sass/hudi_style/_forms.scss
deleted file mode 100644
index 146b379..0000000
--- a/docs-tmp/_sass/hudi_style/_forms.scss
+++ /dev/null
@@ -1,393 +0,0 @@
-/* ==========================================================================
-   Forms
-   ========================================================================== */
-
-form {
-  margin: 0 0 5px 0;
-  padding: 1em;
-  background-color: $form-background-color;
-
-  fieldset {
-    margin-bottom: 5px;
-    padding: 0;
-    border-width: 0;
-  }
-
-  legend {
-    display: block;
-    width: 100%;
-    margin-bottom: 5px * 2;
-    *margin-left: -7px;
-    padding: 0;
-    color: $text-color;
-    border: 0;
-    white-space: normal;
-  }
-
-  p {
-    margin-bottom: (5px / 2);
-  }
-
-  ul {
-    list-style-type: none;
-    margin: 0 0 5px 0;
-    padding: 0;
-  }
-
-  br {
-    display: none;
-  }
-}
-
-label,
-input,
-button,
-select,
-textarea {
-  vertical-align: baseline;
-  *vertical-align: middle;
-}
-
-input,
-button,
-select,
-textarea {
-  box-sizing: border-box;
-  font-family: $sans-serif;
-}
-
-label {
-  display: block;
-  margin-bottom: 0.25em;
-  color: $text-color;
-  cursor: pointer;
-
-  small {
-    font-size: $type-size-6;
-  }
-
-  input,
-  textarea,
-  select {
-    display: block;
-  }
-}
-
-input,
-textarea,
-select {
-  display: inline-block;
-  width: 100%;
-  padding: 0.25em;
-  margin-bottom: 0.5em;
-  color: $text-color;
-  background-color: $background-color;
-  border: $border-color;
-  border-radius: $border-radius;
-  box-shadow: $box-shadow;
-}
-
-.input-mini {
-  width: 60px;
-}
-
-.input-small {
-  width: 90px;
-}
-
-input[type="image"],
-input[type="checkbox"],
-input[type="radio"] {
-  width: auto;
-  height: auto;
-  padding: 0;
-  margin: 3px 0;
-  *margin-top: 0;
-  line-height: normal;
-  cursor: pointer;
-  border-radius: 0;
-  border: 0 \9;
-}
-
-input[type="checkbox"],
-input[type="radio"] {
-  box-sizing: border-box;
-  padding: 0;
-  *width: 13px;
-  *height: 13px;
-}
-
-input[type="image"] {
-  border: 0;
-  box-shadow: none;
-}
-
-input[type="file"] {
-  width: auto;
-  padding: initial;
-  line-height: initial;
-  border: initial;
-  background-color: transparent;
-  background-color: initial;
-  box-shadow: none;
-}
-
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  width: auto;
-  height: auto;
-  cursor: pointer;
-  *overflow: visible;
-}
-
-select,
-input[type="file"] {
-  *margin-top: 4px;
-}
-
-select {
-  width: auto;
-  background-color: #fff;
-}
-
-select[multiple],
-select[size] {
-  height: auto;
-}
-
-textarea {
-  resize: vertical;
-  height: auto;
-  overflow: auto;
-  vertical-align: top;
-}
-
-input[type="hidden"] {
-  display: none;
-}
-
-.form {
-  position: relative;
-}
-
-.radio,
-.checkbox {
-  padding-left: 18px;
-  font-weight: normal;
-}
-
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -18px;
-}
-
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-
-/*
-     Disabled state
-     ========================================================================== */
-
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  opacity: 0.5;
-  cursor: not-allowed;
-}
-
-/*
-     Focus & active state
-     ========================================================================== */
-
-input:focus,
-textarea:focus {
-  border-color: $primary-color;
-  outline: 0;
-  outline: thin dotted \9;
-  box-shadow: inset 0 1px 3px rgba($text-color, 0.06),
-    0 0 5px rgba($primary-color, 0.7);
-}
-
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus,
-select:focus {
-  box-shadow: none;
-}
-
-/*
-     Help text
-     ========================================================================== */
-
-.help-block,
-.help-inline {
-  color: $muted-text-color;
-}
-
-.help-block {
-  display: block;
-  margin-bottom: 1em;
-  line-height: 1em;
-}
-
-.help-inline {
-  display: inline-block;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-
-/*
-     .form-group
-     ========================================================================== */
-
-.form-group {
-  margin-bottom: 5px;
-  padding: 0;
-  border-width: 0;
-}
-
-/*
-     .form-inline
-     ========================================================================== */
-
-.form-inline input,
-.form-inline textarea,
-.form-inline select {
-  display: inline-block;
-  margin-bottom: 0;
-}
-
-.form-inline label {
-  display: inline-block;
-}
-
-.form-inline .radio,
-.form-inline .checkbox,
-.form-inline .radio {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: 0;
-  margin-right: 3px;
-}
-
-/*
-     .form-search
-     ========================================================================== */
-
-.form-search input,
-.form-search textarea,
-.form-search select {
-  display: inline-block;
-  margin-bottom: 0;
-}
-
-.form-search .search-query {
-  padding-left: 14px;
-  padding-right: 14px;
-  margin-bottom: 0;
-  border-radius: 14px;
-}
-
-.form-search label {
-  display: inline-block;
-}
-
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: 0;
-  margin-right: 3px;
-}
-
-/*
-     .form--loading
-     ========================================================================== */
-
-.form--loading:before {
-  content: "";
-}
-
-.form--loading .form__spinner {
-  display: block;
-}
-
-.form:before {
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background-color: rgba(255, 255, 255, 0.7);
-  z-index: 10;
-}
-
-.form__spinner {
-  display: none;
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  z-index: 11;
-}
-
-/*
-     Google search form
-     ========================================================================== */
-
-#goog-fixurl {
-  ul {
-    list-style: none;
-    margin-left: 0;
-    padding-left: 0;
-    li {
-      list-style-type: none;
-    }
-  }
-}
-
-#goog-wm-qt {
-  width: auto;
-  margin-right: 10px;
-  margin-bottom: 20px;
-  padding: 8px 20px;
-  display: inline-block;
-  font-size: $type-size-6;
-  background-color: #fff;
-  color: #000;
-  border-width: 2px !important;
-  border-style: solid !important;
-  border-color: $border-color;
-  border-radius: $border-radius;
-}
-
-#goog-wm-sb {
-  @extend .btn;
-}
diff --git a/docs-tmp/_sass/hudi_style/_masthead.scss b/docs-tmp/_sass/hudi_style/_masthead.scss
deleted file mode 100644
index 4c5eb15..0000000
--- a/docs-tmp/_sass/hudi_style/_masthead.scss
+++ /dev/null
@@ -1,93 +0,0 @@
-/* ==========================================================================
-   MASTHEAD
-   ========================================================================== */
-
-.masthead {
-  position: relative;
-  border-bottom: 1px solid $border-color;
-  -webkit-animation: $intro-transition;
-  animation: $intro-transition;
-  -webkit-animation-delay: 0.15s;
-  animation-delay: 0.15s;
-  z-index: 20;
-
-  &__inner-wrap {
-    @include clearfix;
-    margin-left: auto;
-    margin-right: auto;
-    padding: 1em;
-    max-width: 100%;
-    display: -webkit-box;
-    display: -ms-flexbox;
-    display: flex;
-    -webkit-box-pack: justify;
-    -ms-flex-pack: justify;
-    justify-content: space-between;
-    font-family: $sans-serif-narrow;
-
-    @include breakpoint($x-large) {
-      max-width: $max-width;
-    }
-
-    nav {
-      z-index: 10;
-    }
-
-    a {
-      text-decoration: none;
-    }
-  }
-}
-
-.site-logo img {
-  max-height: 2rem;
-}
-
-.site-title {
-  display: -webkit-box;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-item-align: center;
-  align-self: center;
-  font-weight: bold;
-  z-index: 20;
-}
-
-.site-subtitle {
-  display: block;
-  font-size: $type-size-8;
-}
-
-.masthead__menu {
-  float: left;
-  margin-left: 0;
-  margin-right: 0;
-  width: 100%;
-  clear: both;
-
-  .site-nav {
-    margin-left: 0;
-
-    @include breakpoint($small) {
-      float: right;
-    }
-  }
-
-  ul {
-    margin: 0;
-    padding: 0;
-    clear: both;
-    list-style-type: none;
-  }
-}
-
-.masthead__menu-item {
-  display: block;
-  list-style-type: none;
-  white-space: nowrap;
-
-  &--lg {
-    padding-right: 2em;
-    font-weight: 700;
-  }
-}
diff --git a/docs-tmp/_sass/hudi_style/_mixins.scss b/docs-tmp/_sass/hudi_style/_mixins.scss
deleted file mode 100644
index 4aa9eb0..0000000
--- a/docs-tmp/_sass/hudi_style/_mixins.scss
+++ /dev/null
@@ -1,92 +0,0 @@
-/* ==========================================================================
-   MIXINS
-   ========================================================================== */
-
-%tab-focus {
-  /* Default*/
-  outline: thin dotted $focus-color;
-  /* Webkit*/
-  outline: 5px auto $focus-color;
-  outline-offset: -2px;
-}
-
-/*
-   em function
-   ========================================================================== */
-
-@function em($target, $context: $doc-font-size) {
-  @return ($target / $context) * 1em;
-}
-
-
-/*
-   Bourbon clearfix
-   ========================================================================== */
-
-/*
-  * Provides an easy way to include a clearfix for containing floats.
-  * link http://cssmojo.com/latest_new_clearfix_so_far/
-  *
-  * example scss - Usage
-  *
-  * .element {
-  *   @include clearfix;
-  * }
-  *
-  * example css - CSS Output
-  *
-  * .element::after {
-  *   clear: both;
-  *   content: "";
-  *   display: table;
-  * }
-*/
-
-@mixin clearfix {
-  clear: both;
-
-  &::after {
-    clear: both;
-    content: "";
-    display: table;
-  }
-}
-
-/*
-   Compass YIQ Color Contrast
-   https://github.com/easy-designs/yiq-color-contrast
-   ========================================================================== */
-
-@function yiq-is-light(
-  $color,
-  $threshold: $yiq-contrasted-threshold
-) {
-  $red: red($color);
-  $green: green($color);
-  $blue: blue($color);
-
-  $yiq: (($red*299)+($green*587)+($blue*114))/1000;
-
-  @if $yiq-debug { @debug $yiq, $threshold; }
-
-  @return if($yiq >= $threshold, true, false);
-}
-
-@function yiq-contrast-color(
-  $color,
-  $dark: $yiq-contrasted-dark-default,
-  $light: $yiq-contrasted-light-default,
-  $threshold: $yiq-contrasted-threshold
-) {
-  @return if(yiq-is-light($color, $threshold), $yiq-contrasted-dark-default, $yiq-contrasted-light-default);
-}
-
-@mixin yiq-contrasted(
-  $background-color,
-  $dark: $yiq-contrasted-dark-default,
-  $light: $yiq-contrasted-light-default,
-  $threshold: $yiq-contrasted-threshold
-) {
-  background-color: $background-color;
-  color: yiq-contrast-color($background-color, $dark, $light, $threshold);
-}
\ No newline at end of file
diff --git a/docs-tmp/_sass/hudi_style/_navigation.scss b/docs-tmp/_sass/hudi_style/_navigation.scss
deleted file mode 100644
index 5319c91..0000000
--- a/docs-tmp/_sass/hudi_style/_navigation.scss
+++ /dev/null
@@ -1,572 +0,0 @@
-/* ==========================================================================
-   NAVIGATION
-   ========================================================================== */
-
-/*
-   Breadcrumb navigation links
-   ========================================================================== */
-
-.breadcrumbs {
-  @include clearfix;
-  margin: 0 auto;
-  max-width: 100%;
-  padding-left: 1em;
-  padding-right: 1em;
-  font-family: $sans-serif;
-  -webkit-animation: $intro-transition;
-  animation: $intro-transition;
-  -webkit-animation-delay: 0.3s;
-  animation-delay: 0.3s;
-
-  @include breakpoint($x-large) {
-    max-width: $x-large;
-  }
-
-  ol {
-    padding: 0;
-    list-style: none;
-    font-size: $type-size-6;
-
-    @include breakpoint($large) {
-      float: right;
-      width: calc(100% - #{$right-sidebar-width-narrow});
-    }
-
-    @include breakpoint($x-large) {
-      width: calc(100% - #{$right-sidebar-width});
-    }
-  }
-
-  li {
-    display: inline;
-  }
-
-  .current {
-    font-weight: bold;
-  }
-}
-
-/*
-     Post pagination navigation links
-     ========================================================================== */
-
-.pagination {
-  @include clearfix();
-  float: left;
-  margin-top: 1em;
-  padding-top: 1em;
-  width: 100%;
-
-  ul {
-    margin: 0;
-    padding: 0;
-    list-style-type: none;
-    font-family: $sans-serif;
-  }
-
-  li {
-    display: block;
-    float: left;
-    margin-left: -1px;
-
-    a {
-      display: block;
-      margin-bottom: 0.25em;
-      padding: 0.5em 1em;
-      font-family: $sans-serif;
-      font-size: 14px;
-      font-weight: bold;
-      line-height: 1.5;
-      text-align: center;
-      text-decoration: none;
-      color: $muted-text-color;
-      border: 1px solid mix(#000, $border-color, 25%);
-      border-radius: 0;
-
-      &:hover {
-        color: $link-color-hover;
-      }
-
-      &.current,
-      &.current.disabled {
-        color: #fff;
-        background: $primary-color;
-      }
-
-      &.disabled {
-        color: rgba($muted-text-color, 0.5);
-        pointer-events: none;
-        cursor: not-allowed;
-      }
-    }
-
-    &:first-child {
-      margin-left: 0;
-
-      a {
-        border-top-left-radius: $border-radius;
-        border-bottom-left-radius: $border-radius;
-      }
-    }
-
-    &:last-child {
-      a {
-        border-top-right-radius: $border-radius;
-        border-bottom-right-radius: $border-radius;
-      }
-    }
-  }
-
-  /* next/previous buttons */
-  &--pager {
-    display: block;
-    padding: 1em 2em;
-    float: left;
-    width: 50%;
-    font-family: $sans-serif;
-    font-size: $type-size-5;
-    font-weight: bold;
-    text-align: center;
-    text-decoration: none;
-    color: $muted-text-color;
-    border: 1px solid mix(#000, $border-color, 25%);
-    border-radius: $border-radius;
-
-    &:hover {
-      @include yiq-contrasted($muted-text-color);
-    }
-
-    &:first-child {
-      border-top-right-radius: 0;
-      border-bottom-right-radius: 0;
-    }
-
-    &:last-child {
-      margin-left: -1px;
-      border-top-left-radius: 0;
-      border-bottom-left-radius: 0;
-    }
-
-    &.disabled {
-      color: rgba($muted-text-color, 0.5);
-      pointer-events: none;
-      cursor: not-allowed;
-    }
-  }
-}
-
-.page__content + .pagination,
-.page__meta + .pagination,
-.page__share + .pagination,
-.page__comments + .pagination {
-  margin-top: 2em;
-  padding-top: 2em;
-  border-top: 1px solid $border-color;
-}
-
-/*
-     Priority plus navigation
-     ========================================================================== */
-
-.greedy-nav {
-  position: relative;
-  display: -webkit-box;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: center;
-  -ms-flex-align: center;
-  align-items: center;
-  min-height: $nav-height;
-  //background: $background-color;
-
-  a {
-    display: block;
-    margin: 0 1em;
-    color: $masthead-link-color;
-    text-decoration: none;
-
-    &:hover {
-      color: $masthead-link-color-hover;
-    }
-
-    &.site-logo {
-      margin-left: 0;
-      margin-right: 0.5rem;
-    }
-
-    &.site-title {
-      margin-left: 0;
-    }
-  }
-
-  &__toggle {
-    -ms-flex-item-align: center;
-    align-self: center;
-    height: $nav-toggle-height;
-    border: 0;
-    outline: none;
-    background-color: transparent;
-    cursor: pointer;
-  }
-
-  .visible-links {
-    font-size: 18px;
-    display: -webkit-box;
-    display: -ms-flexbox;
-    display: flex;
-    -webkit-box-pack: end;
-    -ms-flex-pack: end;
-    justify-content: flex-end;
-    -webkit-box-flex: 1;
-    -ms-flex: 1;
-    flex: 1;
-    overflow: hidden;
-
-    li {
-      -webkit-box-flex: 0;
-      -ms-flex: none;
-      flex: none;
-    }
-
-    a {
-      position: relative;
-
-      &:before {
-        content: "";
-        position: absolute;
-        left: 0;
-        bottom: 0;
-        height: 4px;
-        background: $primary-color;
-        width: 100%;
-        -webkit-transition: $global-transition;
-        transition: $global-transition;
-        -webkit-transform: scaleX(0) translate3d(0, 0, 0);
-        transform: scaleX(0) translate3d(0, 0, 0); // hide
-      }
-
-      &:hover:before {
-        -webkit-transform: scaleX(1);
-        -ms-transform: scaleX(1);
-        transform: scaleX(1); // reveal
-      }
-    }
-  }
-
-  .hidden-links {
-    position: absolute;
-    top: 100%;
-    right: 0;
-    margin-top: 15px;
-    padding: 5px;
-    border: 1px solid $border-color;
-    border-radius: $border-radius;
-    background: $background-color;
-    -webkit-box-shadow: 0 2px 4px 0 rgba(#000, 0.16),
-      0 2px 10px 0 rgba(#000, 0.12);
-    box-shadow: 0 2px 4px 0 rgba(#000, 0.16), 0 2px 10px 0 rgba(#000, 0.12);
-
-    &.hidden {
-      display: none;
-    }
-
-    a {
-      margin: 0;
-      padding: 10px 20px;
-      font-size: $type-size-5;
-
-      &:hover {
-        color: $masthead-link-color-hover;
-        background: $navicon-link-color-hover;
-      }
-    }
-
-    &:before {
-      content: "";
-      position: absolute;
-      top: -11px;
-      right: 10px;
-      width: 0;
-      border-style: solid;
-      border-width: 0 10px 10px;
-      border-color: $border-color transparent;
-      display: block;
-      z-index: 0;
-    }
-
-    &:after {
-      content: "";
-      position: absolute;
-      top: -10px;
-      right: 10px;
-      width: 0;
-      border-style: solid;
-      border-width: 0 10px 10px;
-      border-color: $background-color transparent;
-      display: block;
-      z-index: 1;
-    }
-
-    li {
-      display: block;
-      border-bottom: 1px solid $border-color;
-
-      &:last-child {
-        border-bottom: none;
-      }
-    }
-  }
-}
-
-.no-js {
-  .greedy-nav {
-    .visible-links {
-      font-size: 18px;
-      -ms-flex-wrap: wrap;
-      flex-wrap: wrap;
-      overflow: visible;
-    }
-  }
-}
-
-/*
-     Navigation list
-     ========================================================================== */
-
-.nav__list {
-  margin-bottom: 1.5em;
-
-  input[type="checkbox"],
-  label {
-    display: none;
-  }
-
-  @include breakpoint(max-width $large - 1px) {
-    label {
-      position: relative;
-      display: inline-block;
-      padding: 0.5em 2.5em 0.5em 1em;
-      color: $gray;
-      font-size: $type-size-6;
-      font-weight: bold;
-      border: 1px solid $light-gray;
-      border-radius: $border-radius;
-      z-index: 20;
-      -webkit-transition: 0.2s ease-out;
-      transition: 0.2s ease-out;
-      cursor: pointer;
-
-      &:before,
-      &:after {
-        content: "";
-        position: absolute;
-        right: 1em;
-        top: 1.25em;
-        width: 0.75em;
-        height: 0.125em;
-        line-height: 1;
-        background-color: $gray;
-        -webkit-transition: 0.2s ease-out;
-        transition: 0.2s ease-out;
-      }
-
-      &:after {
-        -webkit-transform: rotate(90deg);
-        -ms-transform: rotate(90deg);
-        transform: rotate(90deg);
-      }
-
-      &:hover {
-        color: #fff;
-        border-color: $gray;
-        background-color: mix(white, #000, 20%);
-
-        &:before,
-        &:after {
-          background-color: #fff;
-        }
-      }
-    }
-
-    /* selected*/
-    input:checked + label {
-      color: white;
-      background-color: mix(white, #000, 20%);
-
-      &:before,
-      &:after {
-        background-color: #fff;
-      }
-    }
-
-    /* on hover show expand*/
-    label:hover:after {
-      -webkit-transform: rotate(90deg);
-      -ms-transform: rotate(90deg);
-      transform: rotate(90deg);
-    }
-
-    input:checked + label:hover:after {
-      -webkit-transform: rotate(0);
-      -ms-transform: rotate(0);
-      transform: rotate(0);
-    }
-
-    ul {
-      margin-bottom: 1em;
-    }
-
-    a {
-      display: block;
-      padding: 0.25em 0;
-
-      @include breakpoint($large) {
-        padding-top: 0.125em;
-        padding-bottom: 0.125em;
-      }
-
-      &:hover {
-        text-decoration: underline;
-      }
-    }
-  }
-}
-
-.nav__list .nav__items {
-  margin: 0;
-  font-size: 1.25rem;
-
-  a {
-    color: inherit;
-  }
-
-  .active {
-    margin-left: -0.5em;
-    padding-left: 0.5em;
-    padding-right: 0.5em;
-    font-weight: bold;
-  }
-
-  @include breakpoint(max-width $large - 1px) {
-    position: relative;
-    max-height: 0;
-    opacity: 0%;
-    overflow: hidden;
-    z-index: 10;
-    -webkit-transition: 0.3s ease-in-out;
-    transition: 0.3s ease-in-out;
-    -webkit-transform: translate(0, 10%);
-    -ms-transform: translate(0, 10%);
-    transform: translate(0, 10%);
-  }
-}
-
-@include breakpoint(max-width $large - 1px) {
-  .nav__list input:checked ~ .nav__items {
-    -webkit-transition: 0.5s ease-in-out;
-    transition: 0.5s ease-in-out;
-    max-height: 9999px; /* exaggerate max-height to accommodate tall lists*/
-    overflow: visible;
-    opacity: 1;
-    margin-top: 1em;
-    -webkit-transform: translate(0, 0);
-    -ms-transform: translate(0, 0);
-    transform: translate(0, 0);
-  }
-}
-
-.nav__title {
-  margin: 0;
-  padding: 0.5rem 0.75rem;
-  font-family: $sans-serif-narrow;
-  font-size: $type-size-5;
-  font-weight: bold;
-}
-
-.nav__sub-title {
-  display: block;
-  margin: 0.5rem 0;
-  padding: 0.25rem 0;
-  font-family: $sans-serif-narrow;
-  font-size: $type-size-6;
-  font-weight: bold;
-  text-transform: uppercase;
-  border-bottom: 1px solid $border-color;
-}
-
-/*
-     Table of contents navigation
-     ========================================================================== */
-
-.toc {
-  font-family: $sans-serif-narrow;
-  color: $gray;
-  background-color: $background-color;
-  border: 1px solid $border-color;
-  border-radius: $border-radius;
-  -webkit-box-shadow: $box-shadow;
-  box-shadow: $box-shadow;
-
-  max-height: 520px;
-  overflow-y: auto;
-
-  .nav__title {
-    color: #fff;
-    font-size: $type-size-6;
-    background: $primary-color;
-    border-top-left-radius: $border-radius;
-    border-top-right-radius: $border-radius;
-  }
-
-  // Scrollspy marks toc items as .active when they are in focus
-  .active a {
-    @include yiq-contrasted($active-color);
-    background-color: #ffffff !important;
-  }
-}
-
-.toc__menu {
-  margin: 0;
-  padding: 0;
-  width: 100%;
-  list-style: none;
-  font-size: $type-size-6;
-
-  @include breakpoint($large) {
-    font-size: $type-size-7;
-  }
-
-  a {
-    display: block;
-    padding: 0.25rem 0.75rem;
-    color: $muted-text-color;
-    font-weight: bold;
-    line-height: 1.5;
-    border-bottom: 1px solid $border-color;
-
-    &:hover {
-      color: $text-color;
-    }
-  }
-
-  li ul > li a {
-    padding-left: 1.25rem;
-    font-weight: normal;
-  }
-
-  li ul li ul > li a {
-    padding-left: 1.75rem;
-  }
-
-  li ul li ul li ul > li a {
-    padding-left: 2.25rem;
-  }
-
-  li ul li ul li ul li ul > li a {
-    padding-left: 2.75rem;
-  }
-
-  li ul li ul li ul li ul li ul > li a {
-    padding-left: 3.25rem
-  }
-}
diff --git a/docs-tmp/_sass/hudi_style/_notices.scss b/docs-tmp/_sass/hudi_style/_notices.scss
deleted file mode 100644
index 7f9b733..0000000
--- a/docs-tmp/_sass/hudi_style/_notices.scss
+++ /dev/null
@@ -1,100 +0,0 @@
-/* ==========================================================================
-   NOTICE TEXT BLOCKS
-   ========================================================================== */
-
-/**
- *  Default Kramdown usage (no indents!):
- *  <div class="notice" markdown="1">
- *  #### Headline for the Notice
- *  Text for the notice
- *  </div>
- */
-
-@mixin notice($notice-color) {
-  margin: 2em 0 !important;  /* override*/
-  padding: 1em;
-  color: $dark-gray;
-  font-family: $global-font-family;
-  font-size: $type-size-6 !important;
-  text-indent: initial; /* override*/
-  background-color: mix(#fff, $notice-color, 90%);
-  border-radius: $border-radius;
-  box-shadow: 0 1px 1px rgba($notice-color, 0.25);
-
-  h4 {
-    margin-top: 0 !important; /* override*/
-    margin-bottom: 0.75em;
-  }
-
-  @at-root .page__content #{&} h4 {
-    /* using at-root to override .page-content h4 font size*/
-    margin-bottom: 0;
-    font-size: 1em;
-  }
-
-  p {
-    &:last-child {
-      margin-bottom: 0 !important; /* override*/
-    }
-  }
-
-  h4 + p {
-    /* remove space above paragraphs that appear directly after notice headline*/
-    margin-top: 0;
-    padding-top: 0;
-  }
-
-  a {
-    color: $notice-color;
-
-    &:hover {
-      color: mix(#000, $notice-color, 40%);
-    }
-  }
-
-  code {
-    background-color: mix(#fff, $notice-color, 95%)
-  }
-
-  ul {
-    &:last-child {
-      margin-bottom: 0; /* override*/
-    }
-  }
-}
-
-/* Default notice */
-
-.notice {
-  @include notice($light-gray);
-}
-
-/* Primary notice */
-
-.notice--primary {
-  @include notice($primary-color);
-}
-
-/* Info notice */
-
-.notice--info {
-  @include notice($info-color);
-}
-
-/* Warning notice */
-
-.notice--warning {
-  @include notice($warning-color);
-}
-
-/* Success notice */
-
-.notice--success {
-  @include notice($success-color);
-}
-
-/* Danger notice */
-
-.notice--danger {
-  @include notice($danger-color);
-}
\ No newline at end of file
diff --git a/docs-tmp/_sass/hudi_style/_page.scss b/docs-tmp/_sass/hudi_style/_page.scss
deleted file mode 100644
index 3c94c8e..0000000
--- a/docs-tmp/_sass/hudi_style/_page.scss
+++ /dev/null
@@ -1,548 +0,0 @@
-/* ==========================================================================
-   SINGLE PAGE/POST
-   ========================================================================== */
-
-#main {
-  @include clearfix;
-  margin-left: auto;
-  margin-right: auto;
-  padding-left: 1.2em;
-  padding-right: 1.2em;
-  -webkit-animation: $intro-transition;
-  animation: $intro-transition;
-  max-width: 100%;
-  -webkit-animation-delay: 0.15s;
-  animation-delay: 0.15s;
-
-  @include breakpoint($x-large) {
-    max-width: $max-width;
-  }
-}
-
-body {
-  display: -webkit-box;
-  display: -ms-flexbox;
-  display: flex;
-  min-height: 100vh;
-  -webkit-box-orient: vertical;
-  -webkit-box-direction: normal;
-  -ms-flex-direction: column;
-          flex-direction: column;
-}
-
-.initial-content,
-.search-content {
-  flex: 1 0 auto;
-}
-
-.page {
-  @include breakpoint($large) {
-    float: left;
-    width: calc(100% - #{$right-sidebar-width-narrow} + 90px);
-    padding-left: 30px;
-    padding-right: $right-tocbar-width;
-  }
-
-  @include breakpoint($x-large) {
-    width: calc(100% - #{$right-sidebar-width});
-    padding-right: 215px;
-  }
-
-  .page__inner-wrap {
-    float: left;
-    margin-top: 1.5em;
-    margin-left: 0;
-    margin-right: 0;
-    width: 100%;
-    clear: both;
-
-    .page__content,
-    .page__meta,
-    .page__share {
-      position: relative;
-      float: left;
-      margin-left: 0;
-      margin-right: 0;
-      width: 100%;
-      clear: both;
-    }
-  }
-}
-
-.page__title {
-  margin-top: 0;
-  line-height: 1;
-
-  & + .page__meta {
-    margin-top: -0.5em;
-  }
-}
-
-.page__lead {
-  font-family: $global-font-family;
-  font-size: $type-size-4;
-}
-
-.page__content {
-  h2 {
-    padding-bottom: 0.5em;
-    border-bottom: 1px solid $border-color;
-  }
-
-  h1, h2, h3, h4, h5, h6 {
-      .header-link {
-          position: relative;
-          left: 0.5em;
-          opacity: 0;
-          font-size: 0.8em;
-          -webkit-transition: opacity 0.2s ease-in-out 0.1s;
-          -moz-transition: opacity 0.2s ease-in-out 0.1s;
-          -o-transition: opacity 0.2s ease-in-out 0.1s;
-          transition: opacity 0.2s ease-in-out 0.1s;
-      }
-
-      &:hover .header-link {
-          opacity: 1;
-      }
-  }
-
-  p,
-  li,
-  dl {
-    font-size: 1em;
-  }
-
-  /* paragraph indents */
-  p {
-    margin: 0 0 $indent-var;
-
-    /* sibling indentation*/
-    @if $paragraph-indent == true {
-      & + p {
-        text-indent: $indent-var;
-        margin-top: -($indent-var);
-      }
-    }
-  }
-
-  a:not(.btn) {
-    &:hover {
-      text-decoration: underline;
-
-      img {
-        box-shadow: 0 0 10px rgba(#000, 0.25);
-      }
-    }
-  }
-
-  dt {
-    margin-top: 1em;
-    font-family: $sans-serif;
-    font-weight: bold;
-  }
-
-  dd {
-    margin-left: 1em;
-    font-family: $sans-serif;
-    font-size: $type-size-6;
-  }
-
-  .small {
-    font-size: $type-size-6;
-  }
-
-  /* blockquote citations */
-  blockquote + .small {
-    margin-top: -1.5em;
-    padding-left: 1.25rem;
-  }
-}
-
-.page__hero {
-  position: relative;
-  @include clearfix;
-  -webkit-animation: $intro-transition;
-  animation: $intro-transition;
-  -webkit-animation-delay: 0.25s;
-  animation-delay: 0.25s;
-
-  &--overlay {
-    position: relative;
-    @include clearfix;
-    -webkit-animation: $intro-transition;
-    animation: $intro-transition;
-    -webkit-animation-delay: 0.25s;
-    animation-delay: 0.25s;
-
-    a {
-      color: #fff;
-    }
-
-    .wrapper {
-      padding-left: 1em;
-      padding-right: 1em;
-
-      @include breakpoint($x-large) {
-        max-width: $x-large;
-      }
-    }
-
-    .page__title,
-    .page__meta,
-    .page__lead,
-    .btn {
-      color: #fff;
-      text-shadow: 1px 1px 4px rgba(#000, 0.5);
-    }
-
-    .page__lead {
-      max-width: $medium;
-    }
-
-    .page__title {
-      font-size: $type-size-2;
-
-      @include breakpoint($small) {
-        font-size: $type-size-1;
-      }
-    }
-  }
-}
-
-.page__hero-image {
-  width: 100%;
-  height: auto;
-  -ms-interpolation-mode: bicubic;
-}
-
-.page__hero-caption {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  margin: 0 auto;
-  padding: 2px 5px;
-  color: #fff;
-  font-family: $caption-font-family;
-  font-size: $type-size-7;
-  background: #000;
-  text-align: right;
-  z-index: 5;
-  opacity: 0.5;
-  border-radius: $border-radius 0 0 0;
-
-  @include breakpoint($large) {
-    padding: 5px 10px;
-  }
-
-  a {
-    color: #fff;
-    text-decoration: none;
-  }
-}
-
-/*
-   Social sharing
-   ========================================================================== */
-
-.page__share {
-  margin-top: 2em;
-  padding-top: 1em;
-  border-top: 1px solid $border-color;
-
-  @include breakpoint(max-width $small) {
-    .btn span {
-      border: 0;
-      clip: rect(0 0 0 0);
-      height: 1px;
-      margin: -1px;
-      overflow: hidden;
-      padding: 0;
-      position: absolute;
-      width: 1px;
-    }
-  }
-}
-
-.page__share-title {
-  margin-bottom: 10px;
-  font-size: $type-size-6;
-  text-transform: uppercase;
-}
-
-/*
-   Page meta
-   ========================================================================== */
-
-.page__meta {
-  margin-top: 2em;
-  color: $muted-text-color;
-  font-family: $sans-serif;
-  font-size: $type-size-6;
-
-  p {
-    margin: 0;
-  }
-
-  a {
-    color: inherit;
-  }
-}
-
-.page__meta-title {
-  margin-bottom: 10px;
-  font-size: $type-size-6;
-  text-transform: uppercase;
-}
-
-/*
-   Page taxonomy
-   ========================================================================== */
-
-.page__taxonomy {
-  .sep {
-    display: none;
-  }
-
-  strong {
-    margin-right: 10px;
-  }
-}
-
-.page__taxonomy-item {
-  display: inline-block;
-  margin-right: 5px;
-  margin-bottom: 8px;
-  padding: 5px 10px;
-  text-decoration: none;
-  border: 1px solid mix(#000, $border-color, 25%);
-  border-radius: $border-radius;
-
-  &:hover {
-    text-decoration: none;
-    color: $link-color-hover;
-  }
-}
-
-.taxonomy__section {
-  margin-bottom: 1em;
-  padding-bottom: 1em;
-
-  &:not(:last-child) {
-    border-bottom: solid 1px $border-color;
-  }
-
-  .archive__item-title {
-    margin-top: 0;
-  }
-
-  .archive__subtitle {
-    clear: both;
-    border: 0;
-  }
-
-  + .taxonomy__section {
-    margin-top: 2em;
-  }
-}
-
-.taxonomy__title {
-  margin-bottom: 0.5em;
-  color: lighten($text-color, 60%);
-}
-
-.taxonomy__count {
-  color: lighten($text-color, 50%);
-}
-
-.taxonomy__index {
-  display: grid;
-  grid-column-gap: 2em;
-  grid-template-columns: repeat(2, 1fr);
-  margin: 1.414em 0;
-  padding: 0;
-  font-size: 0.75em;
-  list-style: none;
-
-  @include breakpoint($large) {
-    grid-template-columns: repeat(3, 1fr);
-  }
-
-  a {
-    display: -webkit-box;
-    display: -ms-flexbox;
-    display: flex;
-    padding: 0.25em 0;
-    -webkit-box-pack: justify;
-    -ms-flex-pack: justify;
-    justify-content: space-between;
-    color: inherit;
-    text-decoration: none;
-    border-bottom: 1px solid $border-color;
-  }
-}
-
-.back-to-top {
-  display: block;
-  clear: both;
-  color: #3b9cba !important;
-  font-size: 16px;
-  text-transform: uppercase;
-  text-align: right;
-  text-decoration: none;
-}
-
-/*
-   Comments
-   ========================================================================== */
-
-.page__comments {
-  float: left;
-  margin-left: 0;
-  margin-right: 0;
-  width: 100%;
-  clear: both;
-}
-
-.page__comments-title {
-  margin-top: 2rem;
-  margin-bottom: 10px;
-  padding-top: 2rem;
-  font-size: $type-size-6;
-  border-top: 1px solid $border-color;
-  text-transform: uppercase;
-}
-
-.page__comments-form {
-  -webkit-transition: $global-transition;
-  transition: $global-transition;
-
-  &.disabled {
-    input,
-    button,
-    textarea,
-    label {
-      pointer-events: none;
-      cursor: not-allowed;
-      filter: alpha(opacity=65);
-      box-shadow: none;
-      opacity: 0.65;
-    }
-  }
-}
-
-.comment {
-  @include clearfix();
-  margin: 1em 0;
-
-  &:not(:last-child) {
-    border-bottom: 1px solid $border-color;
-  }
-}
-
-.comment__avatar-wrapper {
-  float: left;
-  width: 60px;
-  height: 60px;
-
-  @include breakpoint($large) {
-    width: 100px;
-    height: 100px;
-  }
-}
-
-.comment__avatar {
-  width: 40px;
-  height: 40px;
-  border-radius: 50%;
-
-  @include breakpoint($large) {
-    width: 80px;
-    height: 80px;
-    padding: 5px;
-    border: 1px solid $border-color;
-  }
-}
-
-.comment__content-wrapper {
-  float: right;
-  width: calc(100% - 60px);
-
-  @include breakpoint($large) {
-    width: calc(100% - 100px);
-  }
-}
-
-.comment__author {
-  margin: 0;
-
-  a {
-    text-decoration: none;
-  }
-}
-
-.comment__date {
-  @extend .page__meta;
-  margin: 0;
-
-  a {
-    text-decoration: none;
-  }
-}
-
-/*
-   Related
-   ========================================================================== */
-
-.page__related {
-  @include clearfix();
-  float: left;
-  margin-top: 2em;
-  padding-top: 1em;
-  border-top: 1px solid $border-color;
-
-  @include breakpoint($large) {
-    float: right;
-    width: calc(100% - #{$right-sidebar-width-narrow});
-  }
-
-  @include breakpoint($x-large) {
-    width: calc(100% - #{$right-sidebar-width});
-  }
-
-  a {
-    color: inherit;
-    text-decoration: none;
-  }
-}
-
-.page__related-title {
-  margin-bottom: 10px;
-  font-size: $type-size-6;
-  text-transform: uppercase;
-}
-
-/*
-   Wide Pages
-   ========================================================================== */
-
-.wide {
-  .page {
-    @include breakpoint($large) {
-      padding-right: 0;
-    }
-
-    @include breakpoint($x-large) {
-      padding-right: 0;
-    }
-  }
-
-  .page__related {
-    @include breakpoint($large) {
-      padding-right: 0;
-    }
-
-    @include breakpoint($x-large) {
-      padding-right: 0;
-    }
-  }
-}
diff --git a/docs-tmp/_sass/hudi_style/_print.scss b/docs-tmp/_sass/hudi_style/_print.scss
deleted file mode 100644
index b93f1d4..0000000
--- a/docs-tmp/_sass/hudi_style/_print.scss
+++ /dev/null
@@ -1,252 +0,0 @@
-/* ==========================================================================
-   PRINT STYLES
-   ========================================================================== */
-
-@media print {
-
-  [hidden] {
-    display: none;
-  }
-
-  * {
-    -moz-box-sizing: border-box;
-    -webkit-box-sizing: border-box;
-    box-sizing: border-box;
-  }
-
-  html {
-    margin: 0;
-    padding: 0;
-    min-height: auto !important;
-    font-size: 16px;
-  }
-
-  body {
-    margin: 0 auto;
-    background: #fff !important;
-    color: #000 !important;
-    font-size: 1rem;
-    line-height: 1.5;
-    -moz-osx-font-smoothing: grayscale;
-    -webkit-font-smoothing: antialiased;
-    text-rendering: optimizeLegibility;
-  }
-
-  h1,
-  h2,
-  h3,
-  h4,
-  h5,
-  h6 {
-    color: #000;
-    line-height: 1.2;
-    margin-bottom: 0.75rem;
-    margin-top: 0;
-  }
-
-  h1 {
-    font-size: 2.5rem;
-  }
-
-  h2 {
-    font-size: 2rem;
-  }
-
-  h3 {
-    font-size: 1.75rem;
-  }
-
-  h4 {
-    font-size: 1.5rem;
-  }
-
-  h5 {
-    font-size: 1.25rem;
-  }
-
-  h6 {
-    font-size: 1rem;
-  }
-
-  a,
-  a:visited {
-    color: #000;
-    text-decoration: underline;
-    word-wrap: break-word;
-  }
-
-  table {
-    border-collapse: collapse;
-  }
-
-  thead {
-    display: table-header-group;
-  }
-
-  table,
-  th,
-  td {
-    border-bottom: 1px solid #000;
-  }
-
-  td,
-  th {
-    padding: 8px 16px;
-  }
-
-  img {
-    border: 0;
-    display: block;
-    max-width: 100% !important;
-    vertical-align: middle;
-  }
-
-  hr {
-    border: 0;
-    border-bottom: 2px solid #bbb;
-    height: 0;
-    margin: 2.25rem 0;
-    padding: 0;
-  }
-
-  dt {
-    font-weight: bold;
-  }
-
-  dd {
-    margin: 0;
-    margin-bottom: 0.75rem;
-  }
-
-  abbr[title],
-  acronym[title] {
-    border: 0;
-    text-decoration: none;
-  }
-
-  table,
-  blockquote,
-  pre,
-  code,
-  figure,
-  li,
-  hr,
-  ul,
-  ol,
-  a,
-  tr {
-    page-break-inside: avoid;
-  }
-
-  h2,
-  h3,
-  h4,
-  p,
-  a {
-    orphans: 3;
-    widows: 3;
-  }
-
-  h1,
-  h2,
-  h3,
-  h4,
-  h5,
-  h6 {
-    page-break-after: avoid;
-    page-break-inside: avoid;
-  }
-
-  h1 + p,
-  h2 + p,
-  h3 + p {
-    page-break-before: avoid;
-  }
-
-  img {
-    page-break-after: auto;
-    page-break-before: auto;
-    page-break-inside: avoid;
-  }
-
-  pre {
-    white-space: pre-wrap !important;
-    word-wrap: break-word;
-  }
-
-  a[href^='http://']:after,
-  a[href^='https://']:after,
-  a[href^='ftp://']:after {
-    content: " (" attr(href) ")";
-    font-size: 80%;
-  }
-
-  abbr[title]:after,
-  acronym[title]:after {
-    content: " (" attr(title) ")";
-  }
-
-  #main {
-    max-width: 100%;
-  }
-
-  .page {
-    margin: 0;
-    padding: 0;
-    width: 100%;
-  }
-
-  .page-break,
-  .page-break-before {
-    page-break-before: always;
-  }
-
-  .page-break-after {
-    page-break-after: always;
-  }
-
-  .no-print {
-    display: none;
-  }
-
-  a.no-reformat:after {
-    content: '';
-  }
-
-  abbr[title].no-reformat:after,
-  acronym[title].no-reformat:after {
-    content: '';
-  }
-
-  .page__hero-caption {
-    color: #000 !important;
-    background: #fff !important;
-    opacity: 1;
-
-    a {
-      color: #000 !important;
-    }
-  }
-
-/*
-   Hide the following elements on print
-   ========================================================================== */
-
-  .masthead,
-  .toc,
-  .page__share,
-  .page__related,
-  .pagination,
-  .ads,
-  .page__footer,
-  .page__comments-form,
-  .author__avatar,
-  .author__content,
-  .author__urls-wrapper,
-  .nav__list,
-  .sidebar,
-  .adsbygoogle {
-    display: none !important;
-    height: 1px !important;
-  }
-}
\ No newline at end of file
diff --git a/docs-tmp/_sass/hudi_style/_reset.scss b/docs-tmp/_sass/hudi_style/_reset.scss
deleted file mode 100644
index 4fa22fc..0000000
--- a/docs-tmp/_sass/hudi_style/_reset.scss
+++ /dev/null
@@ -1,187 +0,0 @@
-/* ==========================================================================
-   STYLE RESETS
-   ========================================================================== */
-
-* { box-sizing: border-box; }
-
-html {
-  /* apply a natural box layout model to all elements */
-  box-sizing: border-box;
-  background-color: $background-color;
-  font-size: 16px;
-
-  @include breakpoint($medium) {
-    font-size: 18px;
-  }
-
-  @include breakpoint($large) {
-    font-size: 20px;
-  }
-
-  @include breakpoint($x-large) {
-    font-size: 22px;
-  }
-
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-
-/* Remove margin */
-
-body { margin: 0; }
-
-/* Selected elements */
-
-::-moz-selection {
-  color: #fff;
-  background: #000;
-}
-
-::selection {
-  //color: #fff;
-  background: #cce2f9;
-}
-
-/* Display HTML5 elements in IE6-9 and FF3 */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section {
-  display: block;
-}
-
-/* Display block in IE6-9 and FF3 */
-
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-
-/* Prevents modern browsers from displaying 'audio' without controls */
-
-audio:not([controls]) {
-  display: none;
-}
-
-a {
-  color: $link-color;
-}
-
-/* Apply focus state */
-
-a:focus {
-  @extend %tab-focus;
-}
-
-/* Remove outline from links */
-
-a:hover,
-a:active {
-  outline: 0;
-}
-
-/* Prevent sub and sup affecting line-height in all browsers */
-
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-
-sup {
-  top: -0.5em;
-}
-
-sub {
-  bottom: -0.25em;
-}
-
-/* img border in anchor's and image quality */
-
-img {
-  /* Responsive images (ensure images don't scale beyond their parents) */
-  max-width: 100%; /* part 1: Set a maximum relative to the parent*/
-  width: auto\9; /* IE7-8 need help adjusting responsive images*/
-  height: auto; /* part 2: Scale the height according to the width, otherwise you get stretching*/
-
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-
-/* Prevent max-width from affecting Google Maps */
-
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-
-/* Consistent form font size in all browsers, margin changes, misc */
-
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-
-button,
-input {
-  *overflow: visible; /* inner spacing ie IE6/7*/
-  line-height: normal; /* FF3/4 have !important on line-height in UA stylesheet*/
-}
-
-button::-moz-focus-inner,
-input::-moz-focus-inner { /* inner padding and border oddities in FF3/4*/
-  padding: 0;
-  border: 0;
-}
-
-button,
-html input[type="button"], // avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls
-input[type="reset"],
-input[type="submit"] {
-    -webkit-appearance: button; /* corrects inability to style clickable `input` types in iOS*/
-    cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/
-}
-
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-    cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/
-}
-
-input[type="search"] { /* Appearance in Safari/Chrome*/
-  box-sizing: border-box;
-  -webkit-appearance: textfield;
-}
-
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none; /* inner-padding issues in Chrome OSX, Safari 5*/
-}
-
-textarea {
-  overflow: auto; /* remove vertical scrollbar in IE6-9*/
-  vertical-align: top; /* readability and alignment cross-browser*/
-}
\ No newline at end of file
diff --git a/docs-tmp/_sass/hudi_style/_search.scss b/docs-tmp/_sass/hudi_style/_search.scss
deleted file mode 100644
index fa7ee83..0000000
--- a/docs-tmp/_sass/hudi_style/_search.scss
+++ /dev/null
@@ -1,132 +0,0 @@
-/* ==========================================================================
-   SEARCH
-   ========================================================================== */
-
-.layout--search {
-  .archive__item-teaser {
-    margin-bottom: 0.25em;
-  }
-}
-
-.search__toggle {
-  margin-left: 1rem;
-  margin-right: 1rem;
-  height: $nav-toggle-height;
-  border: 0;
-  outline: none;
-  color: $primary-color;
-  background-color: transparent;
-  cursor: pointer;
-  -webkit-transition: 0.2s;
-  transition: 0.2s;
-
-  &:hover {
-    color: mix(#000, $primary-color, 25%);
-  }
-}
-
-.search-icon {
-  width: 100%;
-  height: 100%;
-}
-
-.search-content {
-  display: none;
-  visibility: hidden;
-  padding-top: 1em;
-  padding-bottom: 1em;
-
-  &__inner-wrap {
-    width: 100%;
-    margin-left: auto;
-    margin-right: auto;
-    padding-left: 1em;
-    padding-right: 1em;
-    -webkit-animation: $intro-transition;
-    animation: $intro-transition;
-    -webkit-animation-delay: 0.15s;
-    animation-delay: 0.15s;
-
-    @include breakpoint($x-large) {
-      max-width: $max-width;
-    }
-
-  }
-
-  &__form {
-    background-color: transparent;
-  }
-
-  .search-input {
-    display: block;
-    margin-bottom: 0;
-    padding: 0;
-    border: none;
-    outline: none;
-    box-shadow: none;
-    background-color: transparent;
-    font-size: $type-size-3;
-
-    @include breakpoint($large) {
-      font-size: $type-size-2;
-    }
-
-    @include breakpoint($x-large) {
-      font-size: $type-size-1;
-    }
-  }
-
-  &.is--visible {
-    display: block;
-    visibility: visible;
-
-    &::after {
-      content: "";
-      display: block;
-    }
-  }
-
-  .results__found {
-    margin-top: 0.5em;
-    font-size: $type-size-6;
-  }
-
-  .archive__item {
-    margin-bottom: 2em;
-
-    @include breakpoint($large) {
-      width: 75%;
-    }
-
-    @include breakpoint($x-large) {
-      width: 50%;
-    }
-  }
-
-  .archive__item-title {
-    margin-top: 0;
-  }
-
-  .archive__item-excerpt {
-    margin-bottom: 0;
-  }
-}
-
-/* Algolia search */
-
-.ais-search-box {
-  max-width: 100% !important;
-  margin-bottom: 2em;
-}
-
-.archive__item-title .ais-Highlight {
-  color: $primary-color;
-  font-style: normal;
-  text-decoration: underline;
-}
-
-.archive__item-excerpt .ais-Highlight {
-  color: $primary-color;
-  font-style: normal;
-  font-weight: bold;
-}
diff --git a/docs-tmp/_sass/hudi_style/_sidebar.scss b/docs-tmp/_sass/hudi_style/_sidebar.scss
deleted file mode 100644
index 6965796..0000000
--- a/docs-tmp/_sass/hudi_style/_sidebar.scss
+++ /dev/null
@@ -1,320 +0,0 @@
-/* ==========================================================================
-   SIDEBAR
-   ========================================================================== */
-
-/*
-   Default
-   ========================================================================== */
-
-.sidebar {
-  @include clearfix();
-  @include breakpoint(max-width $large) {
-    /* fix z-index order of follow links */
-    position: relative;
-    z-index: 10;
-    -webkit-transform: translate3d(0, 0, 0);
-    transform: translate3d(0, 0, 0);
-  }
-
-  @include breakpoint($large) {
-    float: left;
-    width: calc(#{$right-sidebar-width-narrow} - 4.5em);
-    opacity: 0.75;
-    -webkit-transition: opacity 0.2s ease-in-out;
-    transition: opacity 0.2s ease-in-out;
-
-    &:hover {
-      opacity: 1;
-    }
-
-    &.sticky {
-      overflow-y: auto;
-      /* calculate height of nav list
-         viewport height - nav height - masthead x-padding
-      */
-      height: calc(100vh - #{$nav-height} - 2em);
-    }
-  }
-
-  @include breakpoint($x-large) {
-    width: calc(#{$right-sidebar-width} - 2.5em);
-  }
-
-  > * {
-    margin-top: 1em;
-    margin-bottom: 1em;
-  }
-
-  h2,
-  h3,
-  h4,
-  h5,
-  h6 {
-    margin-bottom: 0;
-    font-family: $sans-serif-narrow;
-  }
-
-  p,
-  li {
-    font-family: $sans-serif;
-    font-size: $type-size-6;
-    line-height: 1.5;
-  }
-
-  img {
-    width: 100%;
-    
-    &.emoji {
-      width: 20px;
-      height: 20px;
-    }
-  }
-}
-
-.sidebar__right {
-  margin-bottom: 1em;
-
-  @include breakpoint($large) {
-    position: absolute;
-    top: 0;
-    right: 0;
-    width: $right-tocbar-width;
-    margin-right: -1 * $right-tocbar-width;
-    padding-left: 1em;
-    z-index: 10;
-
-    &.sticky {
-
-      @include clearfix();
-      position: -webkit-sticky;
-      position: sticky;
-      top: 1.5em;
-      float: right;
-      margin-top: -35px;
-    }
-  }
-
-  @include breakpoint($x-large) {
-    width: $right-tocbar-width;
-    margin-right: -265px;
-  }
-}
-
-.splash .sidebar__right {
-  @include breakpoint($large) {
-    position: relative;
-    float: right;
-    margin-right: 0;
-  }
-
-  @include breakpoint($x-large) {
-    margin-right: 0;
-  }
-}
-
-/*
-   Author profile and links
-   ========================================================================== */
-
-.author__avatar {
-  display: table-cell;
-  vertical-align: top;
-  width: 36px;
-  height: 36px;
-
-  @include breakpoint($large) {
-    display: block;
-    width: auto;
-    height: auto;
-  }
-
-  img {
-    max-width: 110px;
-    border-radius: 50%;
-
-    @include breakpoint($large) {
-      padding: 5px;
-      border: 1px solid $border-color;
-    }
-  }
-}
-
-.author__content {
-  display: none;
-  vertical-align: top;
-  padding-left: 15px;
-  padding-right: 25px;
-  line-height: 1;
-
-  @include breakpoint($large) {
-    display: table-cell;
-    width: 100%;
-    padding-left: 0;
-    padding-right: 0;
-  }
-
-  a {
-    color: inherit;
-    text-decoration: none;
-  }
-}
-
-.author__name {
-  margin: 0;
-
-  @include breakpoint($large) {
-    margin-top: 10px;
-    margin-bottom: 10px;
-  }
-}
-.sidebar .author__name {
-  font-family: $sans-serif;
-  font-size: $type-size-5;
-}
-
-.author__bio {
-  margin: 0;
-
-  @include breakpoint($large) {
-    margin-top: 10px;
-    margin-bottom: 20px;
-  }
-}
-
-.author__urls-wrapper {
-  position: relative;
-  display: table-cell;
-  vertical-align: middle;
-  font-family: $sans-serif;
-  z-index: 10;
-  position: relative;
-  cursor: pointer;
-
-  li:last-child {
-    a {
-      margin-bottom: 0;
-    }
-  }
-
-  @include breakpoint($large) {
-    display: block;
-  }
-
-  button {
-    margin-bottom: 0;
-
-    @include breakpoint($large) {
-      display: none;
-    }
-  }
-}
-
-.author__urls {
-  display: none;
-  position: absolute;
-  right: 0;
-  margin-top: 15px;
-  padding: 10px;
-  list-style-type: none;
-  border: 1px solid $border-color;
-  border-radius: $border-radius;
-  background: $background-color;
-  z-index: -1;
-  box-shadow: 0 2px 4px 0 rgba(#000, 0.16), 0 2px 10px 0 rgba(#000, 0.12);
-  cursor: default;
-
-  &.is--visible {
-    display: block;
-  }
-
-  @include breakpoint($large) {
-    display: block;
-    position: relative;
-    margin: 0;
-    padding: 0;
-    border: 0;
-    background: transparent;
-    box-shadow: none;
-  }
-
-  &:before {
-    display: block;
-    content: "";
-    position: absolute;
-    top: -11px;
-    left: calc(50% - 10px);
-    width: 0;
-    border-style: solid;
-    border-width: 0 10px 10px;
-    border-color: $border-color transparent;
-    z-index: 0;
-
-    @include breakpoint($large) {
-      display: none;
-    }
-  }
-
-  &:after {
-    display: block;
-    content: "";
-    position: absolute;
-    top: -10px;
-    left: calc(50% - 10px);
-    width: 0;
-    border-style: solid;
-    border-width: 0 10px 10px;
-    border-color: $background-color transparent;
-    z-index: 1;
-
-    @include breakpoint($large) {
-      display: none;
-    }
-  }
-
-  li {
-    white-space: nowrap;
-  }
-
-  a {
-    display: block;
-    margin-bottom: 5px;
-    padding-right: 5px;
-    padding-top: 2px;
-    padding-bottom: 2px;
-    color: inherit;
-    font-size: $type-size-5;
-    text-decoration: none;
-
-    &:hover {
-      text-decoration: underline;
-    }
-  }
-}
-
-/*
-   Wide Pages
-   ========================================================================== */
-
-.wide .sidebar__right {
-  margin-bottom: 1em;
-
-  @include breakpoint($large) {
-    position: initial;
-    top: initial;
-    right: initial;
-    width: initial;
-    margin-right: initial;
-    padding-left: initial;
-    z-index: initial;
-
-    &.sticky {
-      float: none;
-    }
-  }
-
-  @include breakpoint($x-large) {
-    width: initial;
-    margin-right: initial;
-  }
-}
-
diff --git a/docs-tmp/_sass/hudi_style/_syntax.scss b/docs-tmp/_sass/hudi_style/_syntax.scss
deleted file mode 100644
index 7265202..0000000
--- a/docs-tmp/_sass/hudi_style/_syntax.scss
+++ /dev/null
@@ -1,324 +0,0 @@
-/* ==========================================================================
-   Syntax highlighting
-   ========================================================================== */
-
-div.highlighter-rouge,
-figure.highlight {
-  position: relative;
-  margin-bottom: 1em;
-  background: $base00;
-  color: $base05;
-  font-family: $monospace;
-  font-size: $type-size-6;
-  line-height: 1.8;
-  border-radius: $border-radius;
-
-  > pre,
-  pre.highlight {
-    margin: 0;
-    padding: 1em;
-  }
-}
-
-.highlight table {
-  margin-bottom: 0;
-  font-size: 1em;
-  border: 0;
-
-  td {
-    padding: 0;
-    width: calc(100% - 1em);
-    border: 0;
-
-    /* line numbers*/
-    &.gutter,
-    &.rouge-gutter {
-      padding-right: 1em;
-      width: 1em;
-      color: $base04;
-      border-right: 1px solid $base04;
-      text-align: right;
-    }
-
-    /* code */
-    &.code,
-    &.rouge-code {
-      padding-left: 1em;
-    }
-  }
-
-  pre {
-    margin: 0;
-  }
-}
-
-.highlight pre {
-  width: 100%;
-}
-
-.highlight .hll {
-  background-color: $base06;
-}
-.highlight {
-  .c {
-    /* Comment */
-    color: $base04;
-  }
-  .err {
-    /* Error */
-    color: $base08;
-  }
-  .k {
-    /* Keyword */
-    color: $base0e;
-  }
-  .l {
-    /* Literal */
-    color: $base09;
-  }
-  .n {
-    /* Name */
-    color: $base05;
-  }
-  .o {
-    /* Operator */
-    color: $base0c;
-  }
-  .p {
-    /* Punctuation */
-    color: $base05;
-  }
-  .cm {
-    /* Comment.Multiline */
-    color: $base04;
-  }
-  .cp {
-    /* Comment.Preproc */
-    color: $base04;
-  }
-  .c1 {
-    /* Comment.Single */
-    color: $base04;
-  }
-  .cs {
-    /* Comment.Special */
-    color: $base04;
-  }
-  .gd {
-    /* Generic.Deleted */
-    color: $base08;
-  }
-  .ge {
-    /* Generic.Emph */
-    font-style: italic;
-  }
-  .gh {
-    /* Generic.Heading */
-    color: $base05;
-    font-weight: bold;
-  }
-  .gi {
-    /* Generic.Inserted */
-    color: $base0b;
-  }
-  .gp {
-    /* Generic.Prompt */
-    color: $base04;
-    font-weight: bold;
-  }
-  .gs {
-    /* Generic.Strong */
-    font-weight: bold;
-  }
-  .gu {
-    /* Generic.Subheading */
-    color: $base0c;
-    font-weight: bold;
-  }
-  .kc {
-    /* Keyword.Constant */
-    color: $base0e;
-  }
-  .kd {
-    /* Keyword.Declaration */
-    color: $base0e;
-  }
-  .kn {
-    /* Keyword.Namespace */
-    color: $base0c;
-  }
-  .kp {
-    /* Keyword.Pseudo */
-    color: $base0e;
-  }
-  .kr {
-    /* Keyword.Reserved */
-    color: $base0e;
-  }
-  .kt {
-    /* Keyword.Type */
-    color: $base0a;
-  }
-  .ld {
-    /* Literal.Date */
-    color: $base0b;
-  }
-  .m {
-    /* Literal.Number */
-    color: $base09;
-  }
-  .s {
-    /* Literal.String */
-    color: $base0b;
-  }
-  .na {
-    /* Name.Attribute */
-    color: $base0d;
-  }
-  .nb {
-    /* Name.Builtin */
-    color: $base05;
-  }
-  .nc {
-    /* Name.Class */
-    color: $base0a;
-  }
-  .no {
-    /* Name.Constant */
-    color: $base08;
-  }
-  .nd {
-    /* Name.Decorator */
-    color: $base0c;
-  }
-  .ni {
-    /* Name.Entity */
-    color: $base05;
-  }
-  .ne {
-    /* Name.Exception */
-    color: $base08;
-  }
-  .nf {
-    /* Name.Function */
-    color: $base0d;
-  }
-  .nl {
-    /* Name.Label */
-    color: $base05;
-  }
-  .nn {
-    /* Name.Namespace */
-    color: $base0a;
-  }
-  .nx {
-    /* Name.Other */
-    color: $base0d;
-  }
-  .py {
-    /* Name.Property */
-    color: $base05;
-  }
-  .nt {
-    /* Name.Tag */
-    color: $base0c;
-  }
-  .nv {
-    /* Name.Variable */
-    color: $base08;
-  }
-  .ow {
-    /* Operator.Word */
-    color: $base0c;
-  }
-  .w {
-    /* Text.Whitespace */
-    color: $base05;
-  }
-  .mf {
-    /* Literal.Number.Float */
-    color: $base09;
-  }
-  .mh {
-    /* Literal.Number.Hex */
-    color: $base09;
-  }
-  .mi {
-    /* Literal.Number.Integer */
-    color: $base09;
-  }
-  .mo {
-    /* Literal.Number.Oct */
-    color: $base09;
-  }
-  .sb {
-    /* Literal.String.Backtick */
-    color: $base0b;
-  }
-  .sc {
-    /* Literal.String.Char */
-    color: $base05;
-  }
-  .sd {
-    /* Literal.String.Doc */
-    color: $base04;
-  }
-  .s2 {
-    /* Literal.String.Double */
-    color: $base0b;
-  }
-  .se {
-    /* Literal.String.Escape */
-    color: $base09;
-  }
-  .sh {
-    /* Literal.String.Heredoc */
-    color: $base0b;
-  }
-  .si {
-    /* Literal.String.Interpol */
-    color: $base09;
-  }
-  .sx {
-    /* Literal.String.Other */
-    color: $base0b;
-  }
-  .sr {
-    /* Literal.String.Regex */
-    color: $base0b;
-  }
-  .s1 {
-    /* Literal.String.Single */
-    color: $base0b;
-  }
-  .ss {
-    /* Literal.String.Symbol */
-    color: $base0b;
-  }
-  .bp {
-    /* Name.Builtin.Pseudo */
-    color: $base05;
-  }
-  .vc {
-    /* Name.Variable.Class */
-    color: $base08;
-  }
-  .vg {
-    /* Name.Variable.Global */
-    color: $base08;
-  }
-  .vi {
-    /* Name.Variable.Instance */
-    color: $base08;
-  }
-  .il {
-    /* Literal.Number.Integer.Long */
-    color: $base09;
-  }
-}
-
-.gist {
-  th, td {
-    border-bottom: 0;
-  }
-}
\ No newline at end of file
diff --git a/docs-tmp/_sass/hudi_style/_tables.scss b/docs-tmp/_sass/hudi_style/_tables.scss
deleted file mode 100644
index c270a77..0000000
--- a/docs-tmp/_sass/hudi_style/_tables.scss
+++ /dev/null
@@ -1,39 +0,0 @@
-/* ==========================================================================
-   TABLES
-   ========================================================================== */
-
-table {
-  display: block;
-  margin-bottom: 1em;
-  width: 100%;
-  font-family: $global-font-family;
-  font-size: $type-size-6;
-  border-collapse: collapse;
-  overflow-x: auto;
-
-  & + table {
-    margin-top: 1em;
-  }
-}
-
-thead {
-  background-color: $border-color;
-  border-bottom: 2px solid mix(#000, $border-color, 25%);
-}
-
-th {
-  padding: 0.5em;
-  font-weight: bold;
-  text-align: left;
-}
-
-td {
-  padding: 0.5em;
-  border-bottom: 1px solid mix(#000, $border-color, 25%);
-}
-
-tr,
-td,
-th {
-  vertical-align: middle;
-}
\ No newline at end of file
diff --git a/docs-tmp/_sass/hudi_style/_utilities.scss b/docs-tmp/_sass/hudi_style/_utilities.scss
deleted file mode 100644
index 427e383..0000000
--- a/docs-tmp/_sass/hudi_style/_utilities.scss
+++ /dev/null
@@ -1,562 +0,0 @@
-/* ==========================================================================
-   UTILITY CLASSES
-   ========================================================================== */
-
-/*
-   Visibility
-   ========================================================================== */
-
-/* http://www.456bereastreet.com/archive/200711/screen_readers_sometimes_ignore_displaynone/ */
-
-.hidden,
-.is--hidden {
-  display: none;
-  visibility: hidden;
-}
-
-/* for preloading images */
-
-.load {
-  display: none;
-}
-
-.transparent {
-  opacity: 0;
-}
-
-/* https://developer.yahoo.com/blogs/ydn/clip-hidden-content-better-accessibility-53456.html */
-
-.visually-hidden,
-.screen-reader-text,
-.screen-reader-text span,
-.screen-reader-shortcut {
-  position: absolute !important;
-  clip: rect(1px, 1px, 1px, 1px);
-  height: 1px !important;
-  width: 1px !important;
-  border: 0 !important;
-  overflow: hidden;
-}
-
-body:hover .visually-hidden a,
-body:hover .visually-hidden input,
-body:hover .visually-hidden button {
-  display: none !important;
-}
-
-/* screen readers */
-
-.screen-reader-text:focus,
-.screen-reader-shortcut:focus {
-  clip: auto !important;
-  height: auto !important;
-  width: auto !important;
-  display: block;
-  font-size: 1em;
-  font-weight: bold;
-  padding: 15px 23px 14px;
-  background: #fff;
-  z-index: 100000;
-  text-decoration: none;
-  box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
-}
-
-/*
-   Skip links
-   ========================================================================== */
-
-.skip-link {
-  position: fixed;
-  z-index: 20;
-  margin: 0;
-  font-family: $sans-serif;
-  white-space: nowrap;
-}
-
-.skip-link li {
-  height: 0;
-  width: 0;
-  list-style: none;
-}
-
-/*
-   Type
-   ========================================================================== */
-
-.text-left {
-  text-align: left;
-}
-
-.text-center {
-  text-align: center;
-}
-
-.text-right {
-  text-align: right;
-}
-
-.text-justify {
-  text-align: justify;
-}
-
-.text-nowrap {
-  white-space: nowrap;
-}
-
-/*
-   Task lists
-   ========================================================================== */
-
-.task-list {
-  padding:0;
-
-  li {
-    list-style-type: none;
-  }
-
-  .task-list-item-checkbox {
-    margin-right: 0.5em;
-    opacity: 1;
-  }
-}
-
-.task-list .task-list {
-  margin-left: 1em;
-}
-
-/*
-   Alignment
-   ========================================================================== */
-
-/* clearfix */
-
-.cf {
-  clear: both;
-}
-
-.wrapper {
-  margin-left: auto;
-  margin-right: auto;
-  width: 100%;
-}
-
-/*
-   Images
-   ========================================================================== */
-
-/* image align left */
-
-.align-left {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-
-  @include breakpoint($small) {
-    float: left;
-    margin-right: 1em;
-  }
-}
-
-/* image align right */
-
-.align-right {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-
-  @include breakpoint($small) {
-    float: right;
-    margin-left: 1em;
-  }
-}
-
-/* image align center */
-
-.align-center {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-/* file page content container */
-
-.full {
-  @include breakpoint($large) {
-    margin-right: -1 * span(2.5 of 12) !important;
-  }
-}
-
-/*
-   Icons
-   ========================================================================== */
-
-.icon {
-  display: inline-block;
-  fill: currentColor;
-  width: 1em;
-  height: 1.1em;
-  line-height: 1;
-  position: relative;
-  top: -0.1em;
-  vertical-align: middle;
-}
-
-/* social icons*/
-
-.social-icons {
-  .fas,
-  .fab,
-  .far,
-  .fal {
-    color: $text-color;
-  }
-
-  .fa-behance,
-  .fa-behance-square {
-    color: $behance-color;
-  }
-
-  .fa-bitbucket {
-    color: $bitbucket-color;
-  }
-
-  .fa-dribbble,
-  .fa-dribble-square {
-    color: $dribbble-color;
-  }
-
-  .fa-facebook,
-  .fa-facebook-square,
-  .fa-facebook-f {
-    color: $facebook-color;
-  }
-
-  .fa-flickr {
-    color: $flickr-color;
-  }
-
-  .fa-foursquare {
-    color: $foursquare-color;
-  }
-
-  .fa-github,
-  .fa-github-alt,
-  .fa-github-square {
-    color: $github-color;
-  }
-
-  .fa-gitlab {
-    color: $gitlab-color;
-  }
-
-  .fa-instagram {
-    color: $instagram-color;
-  }
-
-  .fa-lastfm,
-  .fa-lastfm-square {
-    color: $lastfm-color;
-  }
-
-  .fa-linkedin,
-  .fa-linkedin-in {
-    color: $linkedin-color;
-  }
-
-  .fa-mastodon,
-  .fa-mastodon-square {
-    color: $mastodon-color;
-  }
-
-  .fa-pinterest,
-  .fa-pinterest-p,
-  .fa-pinterest-square {
-    color: $pinterest-color;
-  }
-
-  .fa-reddit {
-    color: $reddit-color;
-  }
-
-  .fa-rss,
-  .fa-rss-square {
-    color: $rss-color;
-  }
-
-  .fa-soundcloud {
-    color: $soundcloud-color;
-  }
-
-  .fa-stack-exchange,
-  .fa-stack-overflow {
-    color: $stackoverflow-color;
-  }
-
-  .fa-tumblr,
-  .fa-tumblr-square {
-    color: $tumblr-color;
-  }
-
-  .fa-twitter,
-  .fa-twitter-square {
-    color: $twitter-color;
-  }
-
-  .fa-vimeo,
-  .fa-vimeo-square,
-  .fa-vimeo-v {
-    color: $vimeo-color;
-  }
-
-  .fa-vine {
-    color: $vine-color;
-  }
-
-  .fa-youtube {
-    color: $youtube-color;
-  }
-
-  .fa-xing,
-  .fa-xing-square {
-    color: $xing-color;
-  }
-}
-
-/*
-   Navicons
-   ========================================================================== */
-
-.navicon {
-  position: relative;
-  width: $navicon-width;
-  height: $navicon-height;
-  background: $primary-color;
-  margin: auto;
-  -webkit-transition: 0.3s;
-  transition: 0.3s;
-
-  &:before,
... 16080 lines suppressed ...