You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by vb...@apache.org on 2019/10/25 05:33:22 UTC

[incubator-hudi] branch asf-site updated: [HUDI-126] Updating site to add a release download page to site

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

vbalaji 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 1905d39  [HUDI-126] Updating site to add a release download page to site
1905d39 is described below

commit 1905d391625589a564fc4e3df85a509a1a3697f0
Author: Balaji Varadarajan <va...@uber.com>
AuthorDate: Thu Oct 24 22:29:34 2019 -0700

    [HUDI-126] Updating site to add a release download page to site
---
 content/404.html                                   |   6 +-
 content/admin_guide.html                           |   6 +-
 content/cn/404.html                                |   2 +-
 content/cn/admin_guide.html                        |   2 +-
 content/cn/community.html                          |   2 +-
 content/cn/comparison.html                         |   2 +-
 content/cn/concepts.html                           |   2 +-
 content/cn/configurations.html                     |   2 +-
 content/cn/contributing.html                       |   2 +-
 content/cn/docker_demo.html                        |   2 +-
 content/cn/events/2016-12-30-strata-talk-2017.html |   2 +-
 content/cn/events/2019-01-18-asf-incubation.html   |   2 +-
 content/cn/gcs_hoodie.html                         |   2 +-
 content/cn/index.html                              |   2 +-
 content/cn/migration_guide.html                    |   2 +-
 content/cn/news.html                               |   2 +-
 content/cn/news_archive.html                       |   2 +-
 content/cn/performance.html                        |   2 +-
 content/cn/powered_by.html                         |   2 +-
 content/cn/privacy.html                            |   2 +-
 content/cn/querying_data.html                      |   2 +-
 content/cn/quickstart.html                         | 298 ++++++++-------------
 content/cn/s3_hoodie.html                          |   2 +-
 content/cn/use_cases.html                          |   2 +-
 content/cn/writing_data.html                       | 135 +++++-----
 content/community.html                             |   6 +-
 content/comparison.html                            |   6 +-
 content/concepts.html                              |   6 +-
 content/configurations.html                        |   6 +-
 content/contributing.html                          |   6 +-
 content/docker_demo.html                           |   6 +-
 content/events/2016-12-30-strata-talk-2017.html    |   6 +-
 content/events/2019-01-18-asf-incubation.html      |   6 +-
 content/feed.xml                                   |   8 +-
 content/gcs_hoodie.html                            |   6 +-
 content/index.html                                 |   6 +-
 content/js/mydoc_scroll.html                       |   6 +-
 content/migration_guide.html                       |   6 +-
 content/news.html                                  |   4 +-
 content/news_archive.html                          |   6 +-
 content/performance.html                           |   6 +-
 content/powered_by.html                            |   6 +-
 content/privacy.html                               |   6 +-
 content/querying_data.html                         |   6 +-
 content/quickstart.html                            |   6 +-
 content/s3_hoodie.html                             |   6 +-
 content/search.json                                |  15 +-
 content/sitemap.xml                                |  96 +++----
 content/use_cases.html                             |   6 +-
 content/writing_data.html                          |   6 +-
 50 files changed, 348 insertions(+), 388 deletions(-)

diff --git a/content/404.html b/content/404.html
index 5c10429..98b31a0 100644
--- a/content/404.html
+++ b/content/404.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/admin_guide.html b/content/admin_guide.html
index 62bcc74..6e57366 100644
--- a/content/admin_guide.html
+++ b/content/admin_guide.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/cn/404.html b/content/cn/404.html
index 5806e32..926fc69 100644
--- a/content/cn/404.html
+++ b/content/cn/404.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/admin_guide.html b/content/cn/admin_guide.html
index 1023472..b15add3 100644
--- a/content/cn/admin_guide.html
+++ b/content/cn/admin_guide.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/community.html b/content/cn/community.html
index 1c4e21c..c9dc27c 100644
--- a/content/cn/community.html
+++ b/content/cn/community.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/comparison.html b/content/cn/comparison.html
index 5dddc97..4d9595d 100644
--- a/content/cn/comparison.html
+++ b/content/cn/comparison.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/concepts.html b/content/cn/concepts.html
index 77a3ec5..1400ee7 100644
--- a/content/cn/concepts.html
+++ b/content/cn/concepts.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/configurations.html b/content/cn/configurations.html
index c917115..97bf307 100644
--- a/content/cn/configurations.html
+++ b/content/cn/configurations.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/contributing.html b/content/cn/contributing.html
index a56da22..be92763 100644
--- a/content/cn/contributing.html
+++ b/content/cn/contributing.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/docker_demo.html b/content/cn/docker_demo.html
index 2810b07..e135222 100644
--- a/content/cn/docker_demo.html
+++ b/content/cn/docker_demo.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/events/2016-12-30-strata-talk-2017.html b/content/cn/events/2016-12-30-strata-talk-2017.html
index 6dfd25c..df3628d 100644
--- a/content/cn/events/2016-12-30-strata-talk-2017.html
+++ b/content/cn/events/2016-12-30-strata-talk-2017.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/events/2019-01-18-asf-incubation.html b/content/cn/events/2019-01-18-asf-incubation.html
index f146611..a55e713 100644
--- a/content/cn/events/2019-01-18-asf-incubation.html
+++ b/content/cn/events/2019-01-18-asf-incubation.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/gcs_hoodie.html b/content/cn/gcs_hoodie.html
index 333eec8..228c0f4 100644
--- a/content/cn/gcs_hoodie.html
+++ b/content/cn/gcs_hoodie.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/index.html b/content/cn/index.html
index ebd87fa..cdcd619 100644
--- a/content/cn/index.html
+++ b/content/cn/index.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/migration_guide.html b/content/cn/migration_guide.html
index 148f430..ab5cf58 100644
--- a/content/cn/migration_guide.html
+++ b/content/cn/migration_guide.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/news.html b/content/cn/news.html
index c875913..4ec3ca1 100644
--- a/content/cn/news.html
+++ b/content/cn/news.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/news_archive.html b/content/cn/news_archive.html
index 6ca01bc..df5fd1e 100644
--- a/content/cn/news_archive.html
+++ b/content/cn/news_archive.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/performance.html b/content/cn/performance.html
index e01045c..d859089 100644
--- a/content/cn/performance.html
+++ b/content/cn/performance.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/powered_by.html b/content/cn/powered_by.html
index d6c80a9..4f5c6c0 100644
--- a/content/cn/powered_by.html
+++ b/content/cn/powered_by.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/privacy.html b/content/cn/privacy.html
index 8c43aad..897801c 100644
--- a/content/cn/privacy.html
+++ b/content/cn/privacy.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/querying_data.html b/content/cn/querying_data.html
index 1479186..ce77e1d 100644
--- a/content/cn/querying_data.html
+++ b/content/cn/querying_data.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/quickstart.html b/content/cn/quickstart.html
index 951999a..0f3b332 100644
--- a/content/cn/quickstart.html
+++ b/content/cn/quickstart.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -338,218 +338,154 @@
 
     
 
-  <p><br />
-为快速了解Hudi的功能,我们制作了一个基于Docker设置、所有依赖系统都在本地运行的<a href="https://www.youtube.com/watch?V=vhngusxdrd0">演示视频</a>。
-我们建议您复制相同的设置然后按照<a href="docker_demo.html">这里</a>的步骤自己运行这个演示。另外,如果您正在寻找将现有数据迁移到Hudi的方法,请参阅<a href="migration_guide.html">迁移指南</a>。</p>
+  <p><br /></p>
 
-<p>如果您已经安装了hive、hadoop和spark,那么请继续阅读。</p>
+<p>本指南通过使用spark-shell简要介绍了Hudi功能。使用Spark数据源,我们将通过代码段展示如何插入和更新的Hudi默认存储类型数据集:
+<a href="https://hudi.apache.org/concepts.html#copy-on-write-storage">写时复制</a>。每次写操作之后,我们还将展示如何读取快照和增量读取数据。</p>
 
-<h2 id="下载hudi">下载Hudi</h2>
+<h2 id="编译hudi-spark整包">编译Hudi spark整包</h2>
+<p>Hudi要求在*nix系统上安装Java 8。Git检出<a href="https://github.com/apache/incubator-hudi">代码</a>,并通过命令行构建maven项目:</p>
 
-<p>Git检出<a href="https://github.com/apache/incubator-hudi">代码</a>或下载<a href="https://github.com/apache/incubator-hudi/archive/hudi-0.4.5.zip">最新版本</a></p>
+<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code># 检出和编译
+git clone https://github.com/apache/incubator-hudi.git &amp;&amp; cd incubator-hudi
+mvn clean install -DskipTests -DskipITs
 
-<p>并通过命令行构建maven项目</p>
-
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mvn clean install -DskipTests -DskipITs
-</code></pre></div></div>
-
-<p>如果使用旧版本的Hive(Hive-1.2.1以前),使用</p>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mvn clean install -DskipTests -DskipITs -Dhive11
+# 为后续使用导入hudi-spark-bundle位置
+mkdir -p /tmp/hudi &amp;&amp; cp packaging/hudi-spark-bundle/target/hudi-spark-bundle-*.*.*-SNAPSHOT.jar  /tmp/hudi/hudi-spark-bundle.jar
+export HUDI_SPARK_BUNDLE_PATH=/tmp/hudi/hudi-spark-bundle.jar
 </code></pre></div></div>
 
-<blockquote>
-  <p>对于IDE,您可以将代码作为普通的maven项目导入IntelliJ。
-您可能需要将spark jars文件夹添加到 ‘Module Settings’ 下的项目依赖中,以便能够在IDE运行。</p>
-</blockquote>
-
-<h3 id="版本兼容性">版本兼容性</h3>
-
-<p>Hudi要求在*nix系统上安装Java 8。 Hudi使用Spark-2.x版本。此外,我们已经验证Hudi可使用以下Hadoop/Hive/Spark组合。</p>
-
-<table>
-  <thead>
-    <tr>
-      <th>Hadoop</th>
-      <th>Hive</th>
-      <th>Spark</th>
-      <th>构建Hudi说明</th>
-    </tr>
-  </thead>
-  <tbody>
-    <tr>
-      <td>2.6.0-cdh5.7.2</td>
-      <td>1.1.0-cdh5.7.2</td>
-      <td>spark-2.[1-3].x</td>
-      <td>Use “mvn clean install -DskipTests -Dhadoop.version=2.6.0-cdh5.7.2 -Dhive.version=1.1.0-cdh5.7.2”</td>
-    </tr>
-    <tr>
-      <td>Apache hadoop-2.8.4</td>
-      <td>Apache hive-2.3.3</td>
-      <td>spark-2.[1-3].x</td>
-      <td>Use “mvn clean install -DskipTests”</td>
-    </tr>
-    <tr>
-      <td>Apache hadoop-2.7.3</td>
-      <td>Apache hive-1.2.1</td>
-      <td>spark-2.[1-3].x</td>
-      <td>Use “mvn clean install -DskipTests”</td>
-    </tr>
-  </tbody>
-</table>
-
-<blockquote>
-  <p>如果你的环境有其他版本的hadoop/hive/spark,请使用Hudi并告诉我们是否存在任何问题。</p>
-</blockquote>
-
-<h2 id="生成样本数据集">生成样本数据集</h2>
-
-<h3 id="环境变量">环境变量</h3>
-
-<p>请根据您的设置配置以下环境变量。我们给出了一个CDH版本的示例设置</p>
-
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd incubator-hudi 
-export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/
-export HIVE_HOME=/var/hadoop/setup/apache-hive-1.1.0-cdh5.7.2-bin
-export HADOOP_HOME=/var/hadoop/setup/hadoop-2.6.0-cdh5.7.2
-export HADOOP_INSTALL=/var/hadoop/setup/hadoop-2.6.0-cdh5.7.2
-export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop
-export SPARK_HOME=/var/hadoop/setup/spark-2.3.1-bin-hadoop2.7
-export SPARK_INSTALL=$SPARK_HOME
-export SPARK_CONF_DIR=$SPARK_HOME/conf
-export PATH=$JAVA_HOME/bin:$HIVE_HOME/bin:$HADOOP_HOME/bin:$SPARK_INSTALL/bin:$PATH
-</code></pre></div></div>
+<h2 id="设置spark-shell">设置spark-shell</h2>
+<p>Hudi适用于Spark-2.x版本。您可以按照<a href="https://spark.apache.org/downloads.html">此处</a>的说明设置spark。
+在提取的目录中,使用spark-shell运行Hudi:</p>
 
-<h3 id="运行hoodiejavaapp">运行HoodieJavaApp</h3>
-
-<p>运行 <strong>hudi-spark/src/test/java/HoodieJavaApp.java</strong> 类,将两个提交(提交1 =&gt; 100个插入,提交2 =&gt; 100个更新到先前插入的100个记录)放到DFS/本地文件系统上。从命令行运行脚本</p>
-
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd hudi-spark
-./run_hoodie_app.sh --help
-Usage: &lt;main class&gt; [options]
-  Options:
-    --help, -h
-       Default: false
-    --table-name, -n
-       table name for Hudi sample table
-       Default: hoodie_rt
-    --table-path, -p
-       path for Hudi sample table
-       Default: file:///tmp/hoodie/sample-table
-    --table-type, -t
-       One of COPY_ON_WRITE or MERGE_ON_READ
-       Default: COPY_ON_WRITE
+<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bin/spark-shell --jars $HUDI_SPARK_BUNDLE_PATH --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'
 </code></pre></div></div>
 
-<p>这个类允许您选择表名、输出路径和存储类型。在您自己的应用程序中,请确保包含<code class="highlighter-rouge">hudi-spark</code>模块依赖并遵循类似模式通过数据源写入/读取数据集。</p>
-
-<h2 id="查询hudi数据集">查询Hudi数据集</h2>
-
-<p>接下来,我们将样本数据集注册到Hive Metastore并尝试使用<a href="#hive">Hive</a>、<a href="#spark">Spark</a>和<a href="#presto">Presto</a>进行查询</p>
-
-<h3 id="本地启动hive-server">本地启动Hive Server</h3>
+<p>设置表名、基本路径和数据生成器来为本指南生成记录。</p>
 
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>hdfs namenode # start name node
-hdfs datanode # start data node
-
-bin/hive --service metastore  # start metastore
-bin/hiveserver2 \
-  --hiveconf hive.root.logger=INFO,console \
-  --hiveconf hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat \
-  --hiveconf hive.stats.autogather=false \
-  --hiveconf hive.aux.jars.path=/path/to/packaging/hudi-hive-bundle/target/hudi-hive-bundle-0.4.6-SNAPSHOT.jar
+<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>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
 </code></pre></div></div>
 
-<h3 id="运行hive同步工具">运行Hive同步工具</h3>
-<p>Hive同步工具将在hive Metastore中更新/创建必要的元数据(模式和分区),这允许模式演变和新分区的增量添加。它使用一种增量方法,将最后一次的同步提交时间存储在TBLPROPERTIES中,并且只同步上次存储的同步提交时间后的提交。
-每次写入后, <a href="writing_data.html #datasource-writer">Spark Datasource</a>和<a href="writing_data.html#deltastreamer">DeltaStreamer</a>都可执行此操作。</p>
-
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd hudi-hive
-./run_sync_tool.sh
-  --user hive
-  --pass hive
-  --database default
-  --jdbc-url "jdbc:hive2://localhost:10010/"
-  --base-path tmp/hoodie/sample-table/
-  --table hoodie_test
-  --partitioned-by field1,field2
+<p><a href="https://github.com/apache/incubator-hudi/blob/master/hudi-spark/src/main/java/org/apache/hudi/QuickstartUtils.java">数据生成器</a>
+可以基于<a href="https://github.com/apache/incubator-hudi/blob/master/hudi-spark/src/main/java/org/apache/hudi/QuickstartUtils.java#L57">行程样本模式</a>
+生成插入和更新的样本。</p>
+
+<h2 id="inserts">插入数据</h2>
+<p>生成一些新的行程样本,将其加载到DataFrame中,然后将DataFrame写入Hudi数据集中,如下所示。</p>
+
+<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>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);
+</code></pre></div></div>
 
+<p><code class="highlighter-rouge">mode(Overwrite)</code>覆盖并重新创建数据集(如果已经存在)。
+您可以检查在<code class="highlighter-rouge">/tmp/hudi_cow_table/&lt;region&gt;/&lt;country&gt;/&lt;city&gt;/</code>下生成的数据。我们提供了一个记录键
+(<a href="#sample-schema">schema</a>中的<code class="highlighter-rouge">uuid</code>),分区字段(<code class="highlighter-rouge">region/county/city</code>)和组合逻辑(<code class="highlighter-rouge">ts</code><a href="#sample-schema">schema</a>)
+以确保行程记录在每个分区中都是唯一的。更多信息请参阅
+<a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=113709185#Frequentlyaskedquestions(FAQ)-HowdoImodelthedatastoredinHudi?">对Hudi中的数据进行建模</a>,
+有关将数据提取到Hudi中的方法的信息,请参阅<a href="https://hudi.apache.org/writing_data.html">写入Hudi数据集</a>。
+这里我们使用默认的写操作:<code class="highlighter-rouge">插入更新</code>。 如果您的工作负载没有<code class="highlighter-rouge">更新</code>,也可以使用更快的<code class="highlighter-rouge">插入</code>或<code class="highlighter-rouge">批量插入</code>操作。
+想了解更多信息,请参阅<a href="https://hudi.apache.org/writing_data.html#write-operations">写操作</a></p>
+
+<h2 id="query">查询数据</h2>
+
+<p>将数据文件加载到数据帧中。</p>
+
+<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>val roViewDF = spark.
+    read.
+    format("org.apache.hudi").
+    load(basePath + "/*/*/*/*")
+roViewDF.registerTempTable("hudi_ro_table")
+spark.sql("select fare, begin_lon, begin_lat, ts from  hudi_ro_table where fare &gt; 20.0").show()
+spark.sql("select _hoodie_commit_time, _hoodie_record_key, _hoodie_partition_path, rider, driver, fare from  hudi_ro_table").show()
 </code></pre></div></div>
 
-<blockquote>
-  <p>若你想亲手运行。请参考<a href="https://cwiki.apache.org/confluence/display/HUDI/Registering+sample+dataset+to+Hive+via+beeline">这个</a>.</p>
-</blockquote>
+<p>该查询提供已提取数据的读取优化视图。由于我们的分区路径(<code class="highlighter-rouge">region/country/city</code>)是嵌套的3个级别
+从基本路径开始,我们使用了<code class="highlighter-rouge">load(basePath + "/*/*/*/*")</code>。
+有关支持的所有存储类型和视图的更多信息,请参考<a href="https://hudi.apache.org/concepts.html#storage-types--views">存储类型和视图</a>。</p>
 
-<h3 id="hive">HiveQL</h3>
+<h2 id="updates">更新数据</h2>
 
-<p>我们首先对表的最新提交的快照进行查询</p>
+<p>这类似于插入新数据。使用数据生成器生成对现有行程的更新,加载到数据帧并将数据帧写入hudi数据集。</p>
 
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>hive&gt; set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
-hive&gt; set hive.stats.autogather=false;
-hive&gt; add jar file:///path/to/hudi-hive-bundle-0.4.6-SNAPSHOT.jar;
-hive&gt; select count(*) from hoodie_test;
-...
-OK
-100
-Time taken: 18.05 seconds, Fetched: 1 row(s)
-hive&gt;
+<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>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);
 </code></pre></div></div>
 
-<h3 id="spark">SparkSQL</h3>
+<p>注意,保存模式现在为<code class="highlighter-rouge">追加</code>。通常,除非您是第一次尝试创建数据集,否则请始终使用追加模式。
+<a href="#query">查询</a>现在再次查询数据将显示更新的行程。每个写操作都会生成一个新的由时间戳表示的<a href="http://hudi.incubator.apache.org/concepts.html">commit</a>
+。在之前提交的相同的<code class="highlighter-rouge">_hoodie_record_key</code>中寻找<code class="highlighter-rouge">_hoodie_commit_time</code>, <code class="highlighter-rouge">rider</code>, <code class="highlighter-rouge">driver</code>字段变更。</p>
+
+<h2 id="增量查询">增量查询</h2>
 
-<p>只要你按上述方式让Hive工作起来,使用Spark将非常容易。只需启动Spark Shell,如下所示</p>
+<p>Hudi还提供了获取给定提交时间戳以来已更改的记录流的功能。
+这可以通过使用Hudi的增量视图并提供所需更改的开始时间来实现。
+如果我们需要给定提交之后的所有更改(这是常见的情况),则无需指定结束时间。</p>
 
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd $SPARK_INSTALL
-$ spark-shell --jars $HUDI_SRC/packaging/hudi-spark-bundle/target/hudi-spark-bundle-0.4.6-SNAPSHOT.jar --driver-class-path $HADOOP_CONF_DIR  --conf spark.sql.hive.convertMetastoreParquet=false --packages com.databricks:spark-avro_2.11:4.0.0
+<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>val commits = spark.sql("select distinct(_hoodie_commit_time) as commitTime from  hudi_ro_table order by commitTime").map(k =&gt; k.getString(0)).take(50)
+val beginTime = commits(commits.length - 2) // commit time we are interested in
 
-scala&gt; val sqlContext = new org.apache.spark.sql.SQLContext(sc)
-scala&gt; sqlContext.sql("show tables").show(10000)
-scala&gt; sqlContext.sql("describe hoodie_test").show(10000)
-scala&gt; sqlContext.sql("describe hoodie_test_rt").show(10000)
-scala&gt; sqlContext.sql("select count(*) from hoodie_test").show(10000)
+// 增量查询数据
+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 &gt; 20.0").show()
 </code></pre></div></div>
 
-<h3 id="presto">Presto</h3>
+<p>这将提供在开始时间提交之后发生的所有更改,其中包含票价大于20.0的过滤器。关于此功能的独特之处在于,它现在使您可以在批量数据上创作流式管道。</p>
 
-<p>Git检出OSS Presto上的 ‘master’ 分支,构建并安装。</p>
+<h2 id="特定时间点查询">特定时间点查询</h2>
 
-<ul>
-  <li>将hudi/packaging/hudi-presto-bundle/target/hudi-presto-bundle-*.jar 复制到 $PRESTO_INSTALL/plugin/hive-hadoop2/</li>
-  <li>启动服务器,您应该能够通过Presto查询到相同的Hive表</li>
-</ul>
+<p>让我们看一下如何查询特定时间的数据。可以通过将结束时间指向特定的提交时间,将开始时间指向”000”(表示最早的提交时间)来表示特定时间。</p>
 
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>show columns from hive.default.hoodie_test;
-select count(*) from hive.default.hoodie_test
-</code></pre></div></div>
+<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>val beginTime = "000" // Represents all commits &gt; this time.
+val endTime = commits(commits.length - 2) // commit time we are interested in
 
-<h3 id="增量-hiveql">增量 HiveQL</h3>
-
-<p>现在我们执行一个查询,以获取自上次提交以来已更改的行。</p>
-
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>hive&gt; set hoodie.hoodie_test.consume.mode=INCREMENTAL;
-hive&gt; set hoodie.hoodie_test.consume.start.timestamp=001;
-hive&gt; set hoodie.hoodie_test.consume.max.commits=10;
-hive&gt; select `_hoodie_commit_time`, rider, driver from hoodie_test where `_hoodie_commit_time` &gt; '001' limit 10;
-OK
-All commits :[001, 002]
-002	rider-001	driver-001
-002	rider-001	driver-001
-002	rider-002	driver-002
-002	rider-001	driver-001
-002	rider-001	driver-001
-002	rider-002	driver-002
-002	rider-001	driver-001
-002	rider-002	driver-002
-002	rider-002	driver-002
-002	rider-001	driver-001
-Time taken: 0.056 seconds, Fetched: 10 row(s)
-hive&gt;
-hive&gt;
+// 增量查询数据
+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 &gt; 20.0").show()
 </code></pre></div></div>
 
-<blockquote>
-  <p>注意:当前只有读优化视图支持。</p>
-</blockquote>
+<h2 id="从这开始下一步">从这开始下一步?</h2>
+
+<p>这里我们使用Spark演示了Hudi的功能。但是,Hudi可以支持多种存储类型/视图,并且可以从Hive,Spark,Presto等查询引擎中查询Hudi数据集。
+我们制作了一个基于Docker设置、所有依赖系统都在本地运行的<a href="https://www.youtube.com/watch?v=VhNgUsxdrD0">演示视频</a>,
+我们建议您复制相同的设置然后按照<a href="docker_demo.html">这里</a>的步骤自己运行这个演示。
+另外,如果您正在寻找将现有数据迁移到Hudi的方法,请参考<a href="migration_guide.html">迁移指南</a>。</p>
 
 
     <div class="tags">
diff --git a/content/cn/s3_hoodie.html b/content/cn/s3_hoodie.html
index b58fe8b..cd9fe1e 100644
--- a/content/cn/s3_hoodie.html
+++ b/content/cn/s3_hoodie.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/use_cases.html b/content/cn/use_cases.html
index f0c8472..5a7e49d 100644
--- a/content/cn/use_cases.html
+++ b/content/cn/use_cases.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
diff --git a/content/cn/writing_data.html b/content/cn/writing_data.html
index ca21699..b0f70bd 100644
--- a/content/cn/writing_data.html
+++ b/content/cn/writing_data.html
@@ -3,9 +3,9 @@
     <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1">
-<meta name="description" content="In this page, we will discuss some available tools for incrementally ingesting & storing data.">
+<meta name="description" content="这一页里,我们将讨论一些可用的工具,这些工具可用于增量摄取和存储数据。">
 <meta name="keywords" content="hudi, incremental, batch, stream, processing, Hive, ETL, Spark SQL">
-<title>Writing Hudi Datasets | Hudi</title>
+<title>写入 Hudi 数据集 | Hudi</title>
 <link rel="stylesheet" href="/css/syntax.css">
 
 
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -164,7 +164,7 @@
 
 
 
-  <a class="email" title="Submit feedback" href="#" onclick="javascript:window.location='mailto:dev@hudi.apache.org?subject=Hudi Documentation feedback&body=I have some feedback about the Writing Hudi Datasets page: ' + window.location.href;"><i class="fa fa-envelope-o"></i> Feedback</a>
+  <a class="email" title="Submit feedback" href="#" onclick="javascript:window.location='mailto:dev@hudi.apache.org?subject=Hudi Documentation feedback&body=I have some feedback about the 写入 Hudi 数据集 page: ' + window.location.href;"><i class="fa fa-envelope-o"></i> Feedback</a>
 
 <li>
 
@@ -187,7 +187,7 @@
                                 searchInput: document.getElementById('search-input'),
                                 resultsContainer: document.getElementById('results-container'),
                                 dataSource: '/search.json',
-                                searchResultTemplate: '<li><a href="{url}" title="Writing Hudi Datasets">{title}</a></li>',
+                                searchResultTemplate: '<li><a href="{url}" title="写入 Hudi 数据集">{title}</a></li>',
                     noResultsText: 'No results found.',
                             limit: 10,
                             fuzzy: true,
@@ -324,7 +324,7 @@
     <!-- Content Column -->
     <div class="col-md-9">
         <div class="post-header">
-   <h1 class="post-title-main">Writing Hudi Datasets</h1>
+   <h1 class="post-title-main">写入 Hudi 数据集</h1>
 </div>
 
 
@@ -332,7 +332,7 @@
 <div class="post-content">
 
    
-    <div class="summary">In this page, we will discuss some available tools for incrementally ingesting & storing data.</div>
+    <div class="summary">这一页里,我们将讨论一些可用的工具,这些工具可用于增量摄取和存储数据。</div>
    
 
     
@@ -340,39 +340,41 @@
 
     
 
-  <p>In this section, we will cover ways to ingest new changes from external sources or even other Hudi datasets using the <a href="#deltastreamer">DeltaStreamer</a> tool, as well as 
-speeding up large Spark jobs via upserts using the <a href="#datasource-writer">Hudi datasource</a>. Such datasets can then be <a href="querying_data.html">queried</a> using various query engines.</p>
+  <p>这一节我们将介绍使用<a href="#deltastreamer">DeltaStreamer</a>工具从外部源甚至其他Hudi数据集摄取新更改的方法,
+以及通过使用<a href="#datasource-writer">Hudi数据源</a>的upserts加快大型Spark作业的方法。
+对于此类数据集,我们可以使用各种查询引擎<a href="querying_data.html">查询</a>它们。</p>
 
-<h2 id="write-operations">Write Operations</h2>
+<h2 id="写操作">写操作</h2>
 
-<p>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.</p>
+<p>在此之前,了解Hudi数据源及delta streamer工具提供的三种不同的写操作以及如何最佳利用它们可能会有所帮助。
+这些操作可以在针对数据集发出的每个提交/增量提交中进行选择/更改。</p>
 
 <ul>
-  <li><strong>UPSERT</strong> : 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.</li>
-  <li><strong>INSERT</strong> : 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.</li>
-  <li><strong>BULK_INSERT</strong> : 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.</li>
+  <li><strong>UPSERT(插入更新)</strong> :这是默认操作,在该操作中,通过查找索引,首先将输入记录标记为插入或更新。
+ 在运行启发式方法以确定如何最好地将这些记录放到存储上,如优化文件大小之类后,这些记录最终会被写入。
+ 对于诸如数据库更改捕获之类的用例,建议该操作,因为输入几乎肯定包含更新。</li>
+  <li><strong>INSERT(插入)</strong> :就使用启发式方法确定文件大小而言,此操作与插入更新(UPSERT)非常相似,但此操作完全跳过了索引查找步骤。
+ 因此,对于日志重复数据删除等用例(结合下面提到的过滤重复项的选项),它可以比插入更新快得多。
+ 插入也适用于这种用例,这种情况数据集可以允许重复项,但只需要Hudi的事务写/增量提取/存储管理功能。</li>
+  <li><strong>BULK_INSERT(批插入)</strong> :插入更新和插入操作都将输入记录保存在内存中,以加快存储优化启发式计算的速度(以及其它未提及的方面)。
+ 所以对Hudi数据集进行初始加载/引导时这两种操作会很低效。批量插入提供与插入相同的语义,但同时实现了基于排序的数据写入算法,
+ 该算法可以很好地扩展数百TB的初始负载。但是,相比于插入和插入更新能保证文件大小,批插入在调整文件大小上只能尽力而为。</li>
 </ul>
 
 <h2 id="deltastreamer">DeltaStreamer</h2>
 
-<p>The <code class="highlighter-rouge">HoodieDeltaStreamer</code> utility (part of hudi-utilities-bundle) provides the way to ingest from different sources such as DFS or Kafka, with the following capabilities.</p>
+<p><code class="highlighter-rouge">HoodieDeltaStreamer</code>实用工具 (hudi-utilities-bundle中的一部分) 提供了从DFS或Kafka等不同来源进行摄取的方式,并具有以下功能。</p>
 
 <ul>
-  <li>Exactly once ingestion of new events from Kafka, <a href="https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_incremental_imports">incremental imports</a> from Sqoop or output of <code class="highlighter-rouge">HiveIncrementalPuller</code> or files under a DFS folder</li>
-  <li>Support json, avro or a custom record types for the incoming data</li>
-  <li>Manage checkpoints, rollback &amp; recovery</li>
-  <li>Leverage Avro schemas from DFS or Confluent <a href="https://github.com/confluentinc/schema-registry">schema registry</a>.</li>
-  <li>Support for plugging in transformations</li>
+  <li>从Kafka单次摄取新事件,从Sqoop、HiveIncrementalPuller输出或DFS文件夹中的多个文件
+ <a href="https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_incremental_imports">增量导入</a></li>
+  <li>支持json、avro或自定义记录类型的传入数据</li>
+  <li>管理检查点,回滚和恢复</li>
+  <li>利用DFS或Confluent <a href="https://github.com/confluentinc/schema-registry">schema注册表</a>的Avro模式。</li>
+  <li>支持自定义转换操作</li>
 </ul>
 
-<p>Command line options describe capabilities in more detail</p>
+<p>命令行选项更详细地描述了这些功能:</p>
 
 <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[hoodie]$ spark-submit --class org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer `ls packaging/hudi-utilities-bundle/target/hudi-utilities-bundle-*.jar` --help
 Usage: &lt;main class&gt; [options]
@@ -445,15 +447,17 @@ Usage: &lt;main class&gt; [options]
       allows a SQL query template to be passed as a transformation function)
 </code></pre></div></div>
 
-<p>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 <code class="highlighter-rouge">hudi-utilities/src/test/resources/delta-streamer-config</code>.</p>
+<p>该工具采用层次结构组成的属性文件,并具有可插拔的接口,用于提取数据、生成密钥和提供模式。
+从Kafka和DFS摄取数据的示例配置在这里:<code class="highlighter-rouge">hudi-utilities/src/test/resources/delta-streamer-config</code>。</p>
 
-<p>For e.g: once you have Confluent Kafka, Schema registry up &amp; running, produce some test data using (<a href="https://docs.confluent.io/current/ksql/docs/tutorials/generate-custom-test-data.html">impressions.avro</a> provided by schema-registry repo)</p>
+<p>例如:当您让Confluent Kafka、Schema注册表启动并运行后,可以用这个命令产生一些测试数据
+(<a href="https://docs.confluent.io/current/ksql/docs/tutorials/generate-custom-test-data.html">impressions.avro</a>,
+由schema-registry代码库提供)</p>
 
 <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[confluent-5.0.0]$ bin/ksql-datagen schema=../impressions.avro format=avro topic=impressions key=impressionid
 </code></pre></div></div>
 
-<p>and then ingest it as follows.</p>
+<p>然后用如下命令摄取这些数据。</p>
 
 <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[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 \
@@ -464,17 +468,17 @@ provided under <code class="highlighter-rouge">hudi-utilities/src/test/resources
   --op BULK_INSERT
 </code></pre></div></div>
 
-<p>In some cases, you may want to migrate your existing dataset into Hudi beforehand. Please refer to <a href="migration_guide.html">migration guide</a>.</p>
+<p>在某些情况下,您可能需要预先将现有数据集迁移到Hudi。 请参考<a href="migration_guide.html">迁移指南</a>。</p>
 
 <h2 id="datasource-writer">Datasource Writer</h2>
 
-<p>The <code class="highlighter-rouge">hudi-spark</code> 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 <code class="highlighter-rouge">recordKey =&gt; _row_key</code>, <code class="highlighter-rouge">partitionPath =&gt; partition</code> and <code class="highlighter-rouge">precombineKey =&gt; timestamp</code></p>
+<p><code class="highlighter-rouge">hudi-spark</code>模块提供了DataSource API,可以将任何数据帧写入(也可以读取)到Hudi数据集中。
+以下是在指定需要使用的字段名称的之后,如何插入更新数据帧的方法,这些字段包括
+<code class="highlighter-rouge">recordKey =&gt; _row_key</code>、<code class="highlighter-rouge">partitionPath =&gt; partition</code>和<code class="highlighter-rouge">precombineKey =&gt; timestamp</code></p>
 
 <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>inputDF.write()
        .format("org.apache.hudi")
-       .options(clientOpts) // any of the Hudi client opts can be passed in as well
+       .options(clientOpts) // 可以传入任何Hudi客户端参数
        .option(DataSourceWriteOptions.RECORDKEY_FIELD_OPT_KEY(), "_row_key")
        .option(DataSourceWriteOptions.PARTITIONPATH_FIELD_OPT_KEY(), "partition")
        .option(DataSourceWriteOptions.PRECOMBINE_FIELD_OPT_KEY(), "timestamp")
@@ -483,11 +487,11 @@ for <code class="highlighter-rouge">recordKey =&gt; _row_key</code>, <code class
        .save(basePath);
 </code></pre></div></div>
 
-<h2 id="syncing-to-hive">Syncing to Hive</h2>
+<h2 id="与hive同步">与Hive同步</h2>
 
-<p>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 <code class="highlighter-rouge">HiveSyncTool</code>, which can be invoked as below, 
-once you have built the hudi-hive module.</p>
+<p>上面的两个工具都支持将数据集的最新模式同步到Hive Metastore,以便查询新的列和分区。
+如果需要从命令行或在独立的JVM中运行它,Hudi提供了一个<code class="highlighter-rouge">HiveSyncTool</code>,
+在构建了hudi-hive模块之后,可以按以下方式调用它。</p>
 
 <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd hudi-hive
 ./run_sync_tool.sh
@@ -510,43 +514,46 @@ Usage: &lt;main class&gt; [options]
        Hive username
 </code></pre></div></div>
 
-<h2 id="deletes">Deletes</h2>
+<h2 id="删除数据">删除数据</h2>
 
-<p>Hudi supports implementing two types of deletes on data stored in Hudi datasets, by enabling the user to specify a different record payload implementation.</p>
+<p>通过允许用户指定不同的数据记录负载实现,Hudi支持对存储在Hudi数据集中的数据执行两种类型的删除。</p>
 
 <ul>
-  <li><strong>Soft Deletes</strong> : 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.</li>
-  <li><strong>Hard Deletes</strong> : 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 <code class="highlighter-rouge">org.apache.hudi.EmptyHoodieRecordPayload</code> class that does exactly this.</li>
+  <li><strong>Soft Deletes(软删除)</strong> :使用软删除时,用户希望保留键,但仅使所有其他字段的值都为空。
+ 通过确保适当的字段在数据集模式中可以为空,并在将这些字段设置为null之后直接向数据集插入更新这些记录,即可轻松实现这一点。</li>
+  <li><strong>Hard Deletes(硬删除)</strong> :这种更强形式的删除是从数据集中彻底删除记录在存储上的任何痕迹。 
+ 这可以通过触发一个带有自定义负载实现的插入更新来实现,这种实现可以使用总是返回Optional.Empty作为组合值的DataSource或DeltaStreamer。 
+ Hudi附带了一个内置的<code class="highlighter-rouge">org.apache.hudi.EmptyHoodieRecordPayload</code>类,它就是实现了这一功能。</li>
 </ul>
 
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> deleteDF // dataframe containing just records to be deleted
+<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> deleteDF // 仅包含要删除的记录的数据帧
    .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 &amp; usual params
+   .option(...) // 根据设置需要添加HUDI参数,例如记录键、分区路径和其他参数
+   // 指定record_key,partition_key,precombine_fieldkey和常规参数
    .option(DataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEY, "org.apache.hudi.EmptyHoodieRecordPayload")
  
 </code></pre></div></div>
 
-<h2 id="storage-management">Storage Management</h2>
+<h2 id="存储管理">存储管理</h2>
 
-<p>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.</p>
+<p>Hudi还对存储在Hudi数据集中的数据执行几个关键的存储管理功能。在DFS上存储数据的关键方面是管理文件大小和数量以及回收存储空间。 
+例如,HDFS在处理小文件上性能很差,这会对Name Node的内存及RPC施加很大的压力,并可能破坏整个集群的稳定性。
+通常,查询引擎可在较大的列文件上提供更好的性能,因为它们可以有效地摊销获得列统计信息等的成本。
+即使在某些云数据存储上,列出具有大量小文件的目录也常常比较慢。</p>
 
-<p>Here are some ways to efficiently manage the storage of your Hudi datasets.</p>
+<p>以下是一些有效管理Hudi数据集存储的方法。</p>
 
 <ul>
-  <li>The <a href="configurations.html#compactionSmallFileSize">small file handling feature</a> in Hudi, profiles incoming workload 
-and distributes inserts to existing file groups instead of creating new file groups, which can lead to small files.</li>
-  <li>Cleaner can be <a href="configurations.html#retainCommits">configured</a> to clean up older file slices, more or less aggressively depending on maximum time for queries to run &amp; lookback needed for incremental pull</li>
-  <li>User can also tune the size of the <a href="configurations.html#limitFileSize">base/parquet file</a>, <a href="configurations.html#logFileMaxSize">log files</a> &amp; expected <a href="configurations.html#parquetCompressionRatio">compression ratio</a>, 
-such that sufficient number of inserts are grouped into the same file group, resulting in well sized base files ultimately.</li>
-  <li>Intelligently tuning the <a href="configurations.html#withBulkInsertParallelism">bulk insert parallelism</a>, 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.</li>
-  <li>For workloads with heavy updates, the <a href="concepts.html#merge-on-read-storage">merge-on-read storage</a> provides a nice mechanism for ingesting quickly into smaller files and then later merging them into larger base files via compaction.</li>
+  <li>Hudi中的<a href="configurations.html#compactionSmallFileSize">小文件处理功能</a>,可以分析传入的工作负载并将插入内容分配到现有文件组中,
+ 而不是创建新文件组。新文件组会生成小文件。</li>
+  <li>可以<a href="configurations.html#retainCommits">配置</a>Cleaner来清理较旧的文件片,清理的程度可以调整,
+ 具体取决于查询所需的最长时间和增量拉取所需的回溯。</li>
+  <li>用户还可以调整<a href="configurations.html#limitFileSize">基础/parquet文件</a>、<a href="configurations.html#logFileMaxSize">日志文件</a>的大小
+ 和预期的<a href="configurations.html#parquetCompressionRatio">压缩率</a>,使足够数量的插入被分到同一个文件组中,最终产生大小合适的基础文件。</li>
+  <li>智能调整<a href="configurations.html#withBulkInsertParallelism">批插入并行度</a>,可以产生大小合适的初始文件组。
+ 实际上,正确执行此操作非常关键,因为文件组一旦创建后就不能删除,只能如前所述对其进行扩展。</li>
+  <li>对于具有大量更新的工作负载,<a href="concepts.html#merge-on-read-storage">读取时合并存储</a>提供了一种很好的机制,
+ 可以快速将其摄取到较小的文件中,之后通过压缩将它们合并为较大的基础文件。</li>
 </ul>
 
 
diff --git a/content/community.html b/content/community.html
index 0e9abb9..09feab7 100644
--- a/content/community.html
+++ b/content/community.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/comparison.html b/content/comparison.html
index 644ff8b..879683c 100644
--- a/content/comparison.html
+++ b/content/comparison.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/concepts.html b/content/concepts.html
index ac506d7..54bba63 100644
--- a/content/concepts.html
+++ b/content/concepts.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/configurations.html b/content/configurations.html
index ff6d598..f387d92 100644
--- a/content/configurations.html
+++ b/content/configurations.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/contributing.html b/content/contributing.html
index 785d92f..b9fe1f8 100644
--- a/content/contributing.html
+++ b/content/contributing.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/docker_demo.html b/content/docker_demo.html
index 97c76c6..b4f4ec5 100644
--- a/content/docker_demo.html
+++ b/content/docker_demo.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/events/2016-12-30-strata-talk-2017.html b/content/events/2016-12-30-strata-talk-2017.html
index ba7908a..c0a9c04 100644
--- a/content/events/2016-12-30-strata-talk-2017.html
+++ b/content/events/2016-12-30-strata-talk-2017.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/events/2019-01-18-asf-incubation.html b/content/events/2019-01-18-asf-incubation.html
index 16d2203..d32b62e 100644
--- a/content/events/2019-01-18-asf-incubation.html
+++ b/content/events/2019-01-18-asf-incubation.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/feed.xml b/content/feed.xml
index c911613..8c74790 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -3,10 +3,10 @@
     <channel>
         <title></title>
         <description>Apache Hudi (pronounced “Hoodie”) provides upserts and incremental processing capaibilities on Big Data</description>
-        <link>http://0.0.0.0:4000/</link>
-        <atom:link href="http://0.0.0.0:4000/feed.xml" rel="self" type="application/rss+xml"/>
-        <pubDate>Thu, 10 Oct 2019 12:20:51 +0000</pubDate>
-        <lastBuildDate>Thu, 10 Oct 2019 12:20:51 +0000</lastBuildDate>
+        <link>http://localhost:4000/</link>
+        <atom:link href="http://localhost:4000/feed.xml" rel="self" type="application/rss+xml"/>
+        <pubDate>Thu, 24 Oct 2019 22:27:46 -0700</pubDate>
+        <lastBuildDate>Thu, 24 Oct 2019 22:27:46 -0700</lastBuildDate>
         <generator>Jekyll v3.7.2</generator>
         
     </channel>
diff --git a/content/gcs_hoodie.html b/content/gcs_hoodie.html
index 79aace2..5330cf1 100644
--- a/content/gcs_hoodie.html
+++ b/content/gcs_hoodie.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/index.html b/content/index.html
index d99d670..59f5957 100644
--- a/content/index.html
+++ b/content/index.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/js/mydoc_scroll.html b/content/js/mydoc_scroll.html
index 576c693..c677591 100644
--- a/content/js/mydoc_scroll.html
+++ b/content/js/mydoc_scroll.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/migration_guide.html b/content/migration_guide.html
index 3749f1e..e55bd7a4 100644
--- a/content/migration_guide.html
+++ b/content/migration_guide.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/news.html b/content/news.html
index 767dde1..b1862d7 100644
--- a/content/news.html
+++ b/content/news.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li class="active"><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
diff --git a/content/news_archive.html b/content/news_archive.html
index 9099217..5d8a286 100644
--- a/content/news_archive.html
+++ b/content/news_archive.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li class="active"><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/performance.html b/content/performance.html
index fc6249f..0cfb590 100644
--- a/content/performance.html
+++ b/content/performance.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/powered_by.html b/content/powered_by.html
index 680a99a..7448322 100644
--- a/content/powered_by.html
+++ b/content/powered_by.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/privacy.html b/content/privacy.html
index 9504f33..473cdd6 100644
--- a/content/privacy.html
+++ b/content/privacy.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/querying_data.html b/content/querying_data.html
index 379bd64..00fc4a0 100644
--- a/content/querying_data.html
+++ b/content/querying_data.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/quickstart.html b/content/quickstart.html
index b4d0bf3..599bb04 100644
--- a/content/quickstart.html
+++ b/content/quickstart.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/s3_hoodie.html b/content/s3_hoodie.html
index 6277263..aae5928 100644
--- a/content/s3_hoodie.html
+++ b/content/s3_hoodie.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/search.json b/content/search.json
index 8d219dc..9434d386 100644
--- a/content/search.json
+++ b/content/search.json
@@ -437,6 +437,17 @@
 
 
 {
+"title": "Releases",
+"tags": "",
+"keywords": "apache, hudi, release, data lake, upsert,",
+"url": "releases.html",
+"summary": "Apache Hudi (incubating) Releases Page"
+}
+,
+
+
+
+{
 "title": "S3 Filesystem",
 "tags": "",
 "keywords": "hudi, hive, aws, s3, spark, presto",
@@ -485,11 +496,11 @@
 
 
 {
-"title": "Writing Hudi Datasets",
+"title": "写入 Hudi 数据集",
 "tags": "",
 "keywords": "hudi, incremental, batch, stream, processing, Hive, ETL, Spark SQL",
 "url": "cnwriting_data.html",
-"summary": "In this page, we will discuss some available tools for incrementally ingesting & storing data."
+"summary": "这一页里,我们将讨论一些可用的工具,这些工具可用于增量摄取和存储数据。"
 }
 ,
 
diff --git a/content/sitemap.xml b/content/sitemap.xml
index 9adf87f..003ca1b 100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@ -6,25 +6,25 @@
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/events/2016-12-30-strata-talk-2017.html</loc>
+    <loc>http://localhost:4000/cn/events/2016-12-30-strata-talk-2017.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/events/2016-12-30-strata-talk-2017.html</loc>
+    <loc>http://localhost:4000/events/2016-12-30-strata-talk-2017.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/events/2019-01-18-asf-incubation.html</loc>
+    <loc>http://localhost:4000/cn/events/2019-01-18-asf-incubation.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/events/2019-01-18-asf-incubation.html</loc>
+    <loc>http://localhost:4000/events/2019-01-18-asf-incubation.html</loc>
   </url>
   
   
@@ -34,85 +34,85 @@
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/admin_guide.html</loc>
+    <loc>http://localhost:4000/cn/admin_guide.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/admin_guide.html</loc>
+    <loc>http://localhost:4000/admin_guide.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/community.html</loc>
+    <loc>http://localhost:4000/cn/community.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/community.html</loc>
+    <loc>http://localhost:4000/community.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/comparison.html</loc>
+    <loc>http://localhost:4000/cn/comparison.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/comparison.html</loc>
+    <loc>http://localhost:4000/comparison.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/concepts.html</loc>
+    <loc>http://localhost:4000/cn/concepts.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/concepts.html</loc>
+    <loc>http://localhost:4000/concepts.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/configurations.html</loc>
+    <loc>http://localhost:4000/cn/configurations.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/configurations.html</loc>
+    <loc>http://localhost:4000/configurations.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/contributing.html</loc>
+    <loc>http://localhost:4000/cn/contributing.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/contributing.html</loc>
+    <loc>http://localhost:4000/contributing.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/docker_demo.html</loc>
+    <loc>http://localhost:4000/cn/docker_demo.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/docker_demo.html</loc>
+    <loc>http://localhost:4000/docker_demo.html</loc>
   </url>
   
   
@@ -120,139 +120,145 @@
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/gcs_hoodie.html</loc>
+    <loc>http://localhost:4000/cn/gcs_hoodie.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/gcs_hoodie.html</loc>
+    <loc>http://localhost:4000/gcs_hoodie.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/index.html</loc>
+    <loc>http://localhost:4000/cn/index.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/index.html</loc>
+    <loc>http://localhost:4000/index.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/migration_guide.html</loc>
+    <loc>http://localhost:4000/cn/migration_guide.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/migration_guide.html</loc>
+    <loc>http://localhost:4000/migration_guide.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/js/mydoc_scroll.html</loc>
+    <loc>http://localhost:4000/js/mydoc_scroll.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/news.html</loc>
+    <loc>http://localhost:4000/cn/news.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/news.html</loc>
+    <loc>http://localhost:4000/news.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/news_archive.html</loc>
+    <loc>http://localhost:4000/cn/news_archive.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/news_archive.html</loc>
+    <loc>http://localhost:4000/news_archive.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/performance.html</loc>
+    <loc>http://localhost:4000/cn/performance.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/performance.html</loc>
+    <loc>http://localhost:4000/performance.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/powered_by.html</loc>
+    <loc>http://localhost:4000/cn/powered_by.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/powered_by.html</loc>
+    <loc>http://localhost:4000/powered_by.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/privacy.html</loc>
+    <loc>http://localhost:4000/cn/privacy.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/privacy.html</loc>
+    <loc>http://localhost:4000/privacy.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/querying_data.html</loc>
+    <loc>http://localhost:4000/cn/querying_data.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/querying_data.html</loc>
+    <loc>http://localhost:4000/querying_data.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/quickstart.html</loc>
+    <loc>http://localhost:4000/cn/quickstart.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/quickstart.html</loc>
+    <loc>http://localhost:4000/quickstart.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/s3_hoodie.html</loc>
+    <loc>http://localhost:4000/releases.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/s3_hoodie.html</loc>
+    <loc>http://localhost:4000/cn/s3_hoodie.html</loc>
+  </url>
+  
+  
+  
+  <url>
+    <loc>http://localhost:4000/s3_hoodie.html</loc>
   </url>
   
   
@@ -262,25 +268,25 @@
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/use_cases.html</loc>
+    <loc>http://localhost:4000/cn/use_cases.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/use_cases.html</loc>
+    <loc>http://localhost:4000/use_cases.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/cn/writing_data.html</loc>
+    <loc>http://localhost:4000/cn/writing_data.html</loc>
   </url>
   
   
   
   <url>
-    <loc>http://0.0.0.0:4000/writing_data.html</loc>
+    <loc>http://localhost:4000/writing_data.html</loc>
   </url>
   
   
diff --git a/content/use_cases.html b/content/use_cases.html
index 09ae6e9..3b57f4a 100644
--- a/content/use_cases.html
+++ b/content/use_cases.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>
     
     
     
diff --git a/content/writing_data.html b/content/writing_data.html
index 39e0d16..1c9ce4d 100644
--- a/content/writing_data.html
+++ b/content/writing_data.html
@@ -46,7 +46,7 @@
 <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
 <![endif]-->
 
-<link rel="alternate" type="application/rss+xml" title="" href="http://0.0.0.0:4000feed.xml">
+<link rel="alternate" type="application/rss+xml" title="" href="http://localhost:4000feed.xml">
 
     <script>
         $(document).ready(function() {
@@ -115,7 +115,7 @@
                 
                 
                 
-                <li><a href="news">News</a></li>
+                <li><a href="releases.html">Releases</a></li>
                 
                 
                 
@@ -220,7 +220,7 @@
 
 
 <ul id="mysidebar" class="nav">
-    <li class="sidebarTitle">Latest Version</li>
+    <li class="sidebarTitle">Latest Version 0.5.0-incubating</li>