Author: lidong
Date: Thu Aug  8 14:10:46 2019
New Revision: 1864708

URL: http://svn.apache.org/viewvc?rev=1864708&view=rev
Log:
Add detailed analysis for Hive Global Dictionary

Added:
    kylin/site/images/Hive-Global-Dictionary/
    kylin/site/images/Hive-Global-Dictionary/cube-level-config.png   (with 
props)
    kylin/site/images/Hive-Global-Dictionary/hive-global-dict-table.png   (with 
props)
    kylin/site/images/Hive-Global-Dictionary/set-hive-dict-column.png   (with 
props)
    kylin/site/images/Hive-Global-Dictionary/three-added-steps.png   (with 
props)
Modified:
    kylin/site/docs30/howto/howto_use_hive_mr_dict.html
    kylin/site/feed.xml

Modified: kylin/site/docs30/howto/howto_use_hive_mr_dict.html
URL: 
http://svn.apache.org/viewvc/kylin/site/docs30/howto/howto_use_hive_mr_dict.html?rev=1864708&r1=1864707&r2=1864708&view=diff
==============================================================================
--- kylin/site/docs30/howto/howto_use_hive_mr_dict.html (original)
+++ kylin/site/docs30/howto/howto_use_hive_mr_dict.html Thu Aug  8 14:10:46 2019
@@ -6357,31 +6357,219 @@ var _hmt = _hmt || [];
                                                        
                                                        
                                                        <article 
class="post-content" > 
-                                                       <h3 
id="global-dictionary">Global Dictionary</h3>
-<p>Count distinct measure is very important for many scenario, such as 
PageView statistics, Kylin support count distinct since 1.5.3 
(http://kylin.apache.org/blog/2016/08/01/count-distinct-in-kylin/). <br />
-Apache Kylin implements precisely count distinct based on bitmap, and use 
global dictionary to encode string value into a Dict. <br />
-Currently we have to build global dictionary in single process/JVM, which may 
take a lot of time and memory for UHC. By in this feature(KYLIN-3841), we use 
Hive, a distributed SQL engine to build global dictionary.</p>
+                                                       <h2 
id="global-dictionary-in-hive">Global Dictionary in Hive</h2>
+<p>Count distinct(bitmap) measure is very important for many scenario, such as 
PageView statistics, and Kylin support count distinct since 1.5.3 .<br />
+Apache Kylin implements precisely count distinct measure based on bitmap, and 
use global dictionary to encode string value into integer. <br />
+Currently we have to build global dictionary in single process/JVM, which may 
take a lot of time and memory for UHC. By this feature(KYLIN-3841), we use 
Hive, a distributed SQL engine to build global dictionary.</p>
 
 <p>This will help to:<br />
-1. Reduce memory pressure of Kylin process, MapReduce will be used to build 
dict for Kylin<br />
-2. Make global dictionary reusable<br />
-3. Make global dictionary readable, you may use global dictionary outside 
Kylin, maybe useful in many scenario.</p>
-
-<p>And this feature will add three steps if enabled.<br />
-1. Global Dict Mr/Hive extract dict_val from Data<br />
-2. Global Dict Mr/Hive build dict_val<br />
-3. Global Dict Mr/Hive replace dict_val to Data</p>
-
-<h3 id="how-to-use">How to use</h3>
-<p>If you have a count distinct(bitmap) measure for a UHC. Says columns name 
are PV_ID and USER_ID, and table name is USER_ACTION, you may add cube-level 
configuration <code 
class="highlighter-rouge">kylin.dictionary.mr-hive.columns=USER_ACTION_PV_ID,USER_ACTION_USER_ID</code>
 to enable this feature.<br />
-You have to know that the value will be replaced into encoded integer in flat 
hive table, and this may cause failure of some query.</p>
+1. Reduce memory pressure of Kylin process, MapReduce(or other engine which 
hive used) will be used to build dict instead of Kylin process itself.<br />
+2. Make build base cuboid quicker, because string value has been encoded in 
previous step.<br />
+3. Make global dictionary reusable.<br />
+4. Make global dictionary readable and bijective, you may use global 
dictionary outside Kylin, this maybe useful in many scenario.</p>
+
+<h3 id="step-by-step-analysis">Step by step Analysis</h3>
+<p>This feature will add three additional steps in cube building if enabled, 
let us try to understand what Kylin do in these steps.</p>
+
+<ol>
+  <li>
+    <p>Global Dict Mr/Hive extract dict_val from Data</p>
+
+    <ul>
+      <li>Create a Hive table for store global dictionary if it is not exists, 
table name should be <em>CubeName_Suffix</em>. This table has two normal column 
and one partition column, two normal columns are <code 
class="highlighter-rouge">dict_key</code> and <code 
class="highlighter-rouge">dict_value</code>, which for origin value and encoded 
integer respectively.</li>
+      <li>Create a temporary table with “__group_by” as its suffix, which 
used to store distinct value for specific column. This table has one normal 
column and one partition column, normal column is <code 
class="highlighter-rouge">dict_key</code> which used to store origin value.</li>
+      <li>Insert distinct value into temporary table created above for each 
column by using a hive query “select cloA from flatTable group by 
cloA”.</li>
+    </ul>
+
+    <p>When this step finished, you should get a temporary table contains 
distinct values, each partition for specific Count_Distinct column.</p>
+  </li>
+  <li>
+    <p>Global Dict Mr/Hive build dict_val</p>
+
+    <ul>
+      <li>Find all fresh distinct value which never exists in any older 
segments by <em>LEFT JOIN</em> between global dictionary table and temporary 
table.</li>
+      <li>Append all fresh distinct value to the tail of global dictionary 
table by <em>UNION</em>. By the power of <code 
class="highlighter-rouge">row_number</code> function in Hive, added value will 
be encoded with integer in incremental way.</li>
+    </ul>
+
+    <p>When this step finished, all distinct value for all Count_Distinct 
column will be encoded correctly in global dictionary table.</p>
+  </li>
+  <li>
+    <p>Global Dict Mr/Hive replace dict_val to Data</p>
+
+    <ul>
+      <li>Using <em>LEFT JOIN</em> to replace original string value with 
encoded integer on flat table which used to build cuboid later.</li>
+    </ul>
+
+    <p>When this step finished, all string value which belong to 
Count_Distinct column will be updated with encoded integer in flat hive 
table.</p>
+  </li>
+</ol>
+
+<hr />
+
+<h2 id="how-to-use">How to use</h2>
+
+<p>If you have some count distinct(bitmap) measure, and data type of that 
column is String, you may need Hive Global Dictionary. Says columns name are 
PV_ID and USER_ID, and table name is USER_ACTION, you may add cube-level 
configuration <code 
class="highlighter-rouge">kylin.dictionary.mr-hive.columns=USER_ACTION_PV_ID,USER_ACTION_USER_ID</code>
 to enable this feature.</p>
+
+<p>Please don’t use hive global dictionary on integer type column, you have 
to know that the value will be replaced with encoded integer in flat hive 
table. If you have sum/max/min measure on the same column, you will get wrong 
result in these measures.</p>
+
+<p>And you should know this feature is conflicted with shrunken global 
dictionary(KYLIN-3491) because they fix the same thing in different way.</p>
 
 <h3 id="configuration">Configuration</h3>
+
+<ul>
+  <li><code class="highlighter-rouge">kylin.dictionary.mr-hive.columns</code> 
is used to specific which columns need to use Hive-MR dict, should be 
<em>TABLE1_COLUMN1,TABLE2_COLUMN2</em>. Better configured in cube level, 
default value is empty.</li>
+  <li><code class="highlighter-rouge">kylin.dictionary.mr-hive.database</code> 
is used to specific which database Hive-MR dict table located, default value is 
<em>default</em>.</li>
+  <li><code class="highlighter-rouge">kylin.hive.union.style</code> Sometime 
sql which used to build global dict table may have problem in union syntax, you 
may refer to Hive Doc for more detail. The default value is <em>UNION</em>, 
using lower version of Hive should change to <em>UNION ALL</em>.</li>
+  <li><code 
class="highlighter-rouge">kylin.dictionary.mr-hive.table.suffix</code> is used 
to specific suffix of global dict table, default value is 
<em>_global_dict</em>.</li>
+</ul>
+
+<hr />
+
+<h2 id="screenshot">Screenshot</h2>
+
+<h4 id="sql-in-new-added-step-add-countdistinctbitmap-measure">SQL in new 
added step Add count_distinct(bitmap) measure</h4>
+
+<p><img src="/images/Hive-Global-Dictionary/cube-level-config.png" 
alt="add_count_distinct_bitmap" /></p>
+
+<h4 id="sql-in-new-added-step-set-hive-dict-column-in-cube-level-config">SQL 
in new added step Set hive-dict-column in cube level config</h4>
+
+<p><img src="/images/Hive-Global-Dictionary/set-hive-dict-column.png" 
alt="set-hive-dict-column" /></p>
+
+<h4 id="sql-in-new-added-step-three-added-steps-of-cubing-job">SQL in new 
added step Three added steps of cubing job</h4>
+
+<p><img src="/images/Hive-Global-Dictionary/three-added-steps.png" 
alt="three-added-steps" /></p>
+
+<h4 id="sql-in-new-added-step-hive-global-dictionary-table">SQL in new added 
step Hive Global Dictionary Table</h4>
+
+<p><img src="/images/Hive-Global-Dictionary/hive-global-dict-table.png" 
alt="hive-global-dict-table" /></p>
+
+<h4 id="sql-in-new-added-step">SQL in new added step</h4>
+
+<ul>
+  <li>Global Dict Mr/Hive extract dict_val from Data</li>
+</ul>
+
+<div class="highlight"><pre><code class="language-groff" 
data-lang="groff">CREATE TABLE IF NOT EXISTS 
lacus.KYLIN_SALE_HIVE_DICT_HIVE_GLOBAL
+    ( dict_key STRING COMMENT '',
+    dict_val INT COMMENT ''
+    )
+    COMMENT ''
+    PARTITIONED BY (dict_column string)
+    STORED AS TEXTFILE;
+    DROP TABLE IF EXISTS 
kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195__group_by;
+    CREATE TABLE IF NOT EXISTS 
kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195__group_by
+    (
+     dict_key STRING COMMENT ''
+    )
+    COMMENT ''
+    PARTITIONED BY (dict_column string)
+    STORED AS SEQUENCEFILE
+    ;
+    INSERT OVERWRITE TABLE 
kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195__group_by
+    PARTITION (dict_column = 'KYLIN_SALES_LSTG_FORMAT_NAME')
+    SELECT
+    KYLIN_SALES_LSTG_FORMAT_NAME
+    FROM 
kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195
+    GROUP BY KYLIN_SALES_LSTG_FORMAT_NAME
+    ;
+    INSERT OVERWRITE TABLE 
kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195__group_by
+    PARTITION (dict_column = 'KYLIN_SALES_OPS_REGION')
+    SELECT
+    KYLIN_SALES_OPS_REGION
+    FROM 
kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195
+    GROUP BY KYLIN_SALES_OPS_REGION ;</code></pre></div>
+
+<ul>
+  <li>Global Dict Mr/Hive build dict_val</li>
+</ul>
+
+<div class="highlight"><pre><code class="language-groff" 
data-lang="groff">INSERT OVERWRITE TABLE lacus.KYLIN_SALE_HIVE_DICT_HIVE_GLOBAL
+    PARTITION (dict_column = 'KYLIN_SALES_OPS_REGION')
+    SELECT dict_key, dict_val FROM lacus.KYLIN_SALE_HIVE_DICT_HIVE_GLOBAL
+    WHERE dict_column = 'KYLIN_SALES_OPS_REGION'
+    UNION ALL
+    SELECT a.dict_key as dict_key, (row_number() over(order by a.dict_key 
asc)) + (0) as dict_val
+    FROM
+    (
+     SELECT dict_key FROM 
default.kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195__group_by
 WHERE dict_column = 'KYLIN_SALES_OPS_REGION' AND dict_key is not null
+    ) a
+    LEFT JOIN
+    (
+    SELECT dict_key, dict_val FROM lacus.KYLIN_SALE_HIVE_DICT_HIVE_GLOBAL 
WHERE dict_column = 'KYLIN_SALES_OPS_REGION'
+    ) b
+    ON a.dict_key = b.dict_key
+    WHERE b.dict_val is null;
+
+    INSERT OVERWRITE TABLE lacus.KYLIN_SALE_HIVE_DICT_HIVE_GLOBAL
+    PARTITION (dict_column = 'KYLIN_SALES_LSTG_FORMAT_NAME')
+    SELECT dict_key, dict_val FROM lacus.KYLIN_SALE_HIVE_DICT_HIVE_GLOBAL
+    WHERE dict_column = 'KYLIN_SALES_LSTG_FORMAT_NAME'
+    UNION ALL
+    SELECT a.dict_key as dict_key, (row_number() over(order by a.dict_key 
asc)) + (0) as dict_val
+    FROM
+    (
+     SELECT dict_key FROM 
default.kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195__group_by
 WHERE dict_column = 'KYLIN_SALES_LSTG_FORMAT_NAME' AND dict_key is not null
+    ) a
+    LEFT JOIN
+    (
+    SELECT dict_key, dict_val FROM lacus.KYLIN_SALE_HIVE_DICT_HIVE_GLOBAL 
WHERE dict_column = 'KYLIN_SALES_LSTG_FORMAT_NAME'
+    ) b
+    ON a.dict_key = b.dict_key
+    WHERE b.dict_val is null;</code></pre></div>
+
+<ul>
+  <li>Global Dict Mr/Hive replace dict_val to Data</li>
+</ul>
+
+<div class="highlight"><pre><code class="language-groff" 
data-lang="groff">INSERT OVERWRITE TABLE 
default.kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195
+    SELECT
+    a.KYLIN_SALES_TRANS_ID
+    ,a.KYLIN_SALES_PART_DT
+    ,a.KYLIN_SALES_LEAF_CATEG_ID
+    ,a.KYLIN_SALES_LSTG_SITE_ID
+    ,a.KYLIN_SALES_SELLER_ID
+    ,a.KYLIN_SALES_BUYER_ID
+    ,a.BUYER_ACCOUNT_ACCOUNT_COUNTRY
+    ,a.SELLER_ACCOUNT_ACCOUNT_COUNTRY
+    ,a.KYLIN_SALES_PRICE
+    ,a.KYLIN_SALES_ITEM_COUNT
+    ,a.KYLIN_SALES_LSTG_FORMAT_NAME
+    ,b. dict_val
+    FROM 
default.kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195
 a
+    LEFT OUTER JOIN
+    (
+    SELECT dict_key, dict_val FROM lacus.KYLIN_SALE_HIVE_DICT_HIVE_GLOBAL 
WHERE dict_column = 'KYLIN_SALES_OPS_REGION'
+    ) b
+     ON a.KYLIN_SALES_OPS_REGION = b.dict_key;
+    INSERT OVERWRITE TABLE 
default.kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195
+    SELECT
+    a.KYLIN_SALES_TRANS_ID
+    ,a.KYLIN_SALES_PART_DT
+    ,a.KYLIN_SALES_LEAF_CATEG_ID
+    ,a.KYLIN_SALES_LSTG_SITE_ID
+    ,a.KYLIN_SALES_SELLER_ID
+    ,a.KYLIN_SALES_BUYER_ID
+    ,a.BUYER_ACCOUNT_ACCOUNT_COUNTRY
+    ,a.SELLER_ACCOUNT_ACCOUNT_COUNTRY
+    ,a.KYLIN_SALES_PRICE
+    ,a.KYLIN_SALES_ITEM_COUNT
+    ,b. dict_val
+    ,a.KYLIN_SALES_OPS_REGION
+    FROM 
default.kylin_intermediate_kylin_sale_hive_dict_921b0a15_d7cd_a2e6_6852_4ce44158f195
 a
+    LEFT OUTER JOIN
+    (
+    SELECT dict_key, dict_val FROM lacus.KYLIN_SALE_HIVE_DICT_HIVE_GLOBAL 
WHERE dict_column = 'KYLIN_SALES_LSTG_FORMAT_NAME'
+    ) b
+     ON a.KYLIN_SALES_LSTG_FORMAT_NAME = b.dict_key;</code></pre></div>
+
+<h3 id="reference-link">Reference Link</h3>
+
 <ul>
-  <li><code class="highlighter-rouge">kylin.dictionary.mr-hive.columns</code> 
is used to specific which columns need to be Hive-MR dict.</li>
-  <li><code class="highlighter-rouge">kylin.dictionary.mr-hive.database</code> 
is used to specific which database Hive-MR dict located.</li>
-  <li><code class="highlighter-rouge">kylin.hive.union.style</code> Sometime 
sql which used to build global dict table may have syntax problem. This should 
be fixed by specific this entry with <em>UNION ALL</em>.</li>
-  <li><code 
class="highlighter-rouge">kylin.dictionary.mr-hive.table.suffix</code> is used 
to specific suffix of global dict table.</li>
+  <li>https://issues.apache.org/jira/browse/KYLIN-3491</li>
+  <li>https://issues.apache.org/jira/browse/KYLIN-3841</li>
+  <li>https://issues.apache.org/jira/browse/KYLIN-3905</li>
+  
<li>https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Union</li>
+  <li>http://kylin.apache.org/blog/2016/08/01/count-distinct-in-kylin/</li>
 </ul>
 
                                                        </article>

Modified: kylin/site/feed.xml
URL: 
http://svn.apache.org/viewvc/kylin/site/feed.xml?rev=1864708&r1=1864707&r2=1864708&view=diff
==============================================================================
--- kylin/site/feed.xml (original)
+++ kylin/site/feed.xml Thu Aug  8 14:10:46 2019
@@ -19,8 +19,8 @@
     <description>Apache Kylin Home</description>
     <link>http://kylin.apache.org/</link>
     <atom:link href="http://kylin.apache.org/feed.xml"; rel="self" 
type="application/rss+xml"/>
-    <pubDate>Thu, 01 Aug 2019 06:52:56 -0700</pubDate>
-    <lastBuildDate>Thu, 01 Aug 2019 06:52:56 -0700</lastBuildDate>
+    <pubDate>Thu, 08 Aug 2019 06:59:20 -0700</pubDate>
+    <lastBuildDate>Thu, 08 Aug 2019 06:59:20 -0700</lastBuildDate>
     <generator>Jekyll v2.5.3</generator>
     
       <item>
@@ -1191,114 +1191,114 @@ Security: (depend on your security setti
       </item>
     
       <item>
-        <title>Apache Kylin v3.0.0-alpha 发布</title>
-        <description>&lt;p&gt;近日 Apache Kylin 社区很高å…
´åœ°å®£å¸ƒï¼ŒApache Kylin v3.0.0-alpha 正式发布。&lt;/p&gt;
+        <title>Apache Kylin v3.0.0-alpha Release Announcement</title>
+        <description>&lt;p&gt;The Apache Kylin community is pleased to 
announce the release of Apache Kylin v3.0.0-alpha.&lt;/p&gt;
 
-&lt;p&gt;Apache Kylin 
是一个开源的分布式分析引擎,旨在为极大数据集提供 SQL 
接口和多维分析(OLAP)的能力。&lt;/p&gt;
+&lt;p&gt;Apache Kylin is an open source Distributed Analytics Engine designed 
to provide SQL interface and multi-dimensional analysis (OLAP) on Big Data 
supporting extremely large datasets.&lt;/p&gt;
 
-&lt;p&gt;这是 Kylin 下一代 v3.x 
的第一个发布版本,用于早期预览,主要的功能是实时 
(Real-time) OLAP。完整的改动列表请参见&lt;a 
href=&quot;/docs/release_notes.html&quot;&gt;release 
notes&lt;/a&gt;;这里挑一些主要改进做说明。&lt;/p&gt;
+&lt;p&gt;This is the first release of the new generation v3.x, the main 
feature introduced is the Real-time OLAP. All of the changes can be found in 
the &lt;a href=&quot;/docs/release_notes.html&quot;&gt;release 
notes&lt;/a&gt;. Here we just highlight the main features.&lt;/p&gt;
 
-&lt;h1 id=&quot;section&quot;&gt;重要新功能&lt;/h1&gt;
+&lt;h1 id=&quot;important-features&quot;&gt;Important features&lt;/h1&gt;
 
-&lt;h3 id=&quot;kylin-3654----olap&quot;&gt;KYLIN-3654 - 实时 OLAP&lt;/h3&gt;
-&lt;p&gt;随着引入新的 real-time receiver 和 coordinator 组件,Kylin 
能够实现毫秒级别的数据准备延迟,数据源来自流式数据如 
Apache Kafka。这意味着,从 v3.0 开始,Kylin 
既能够支持历史批量数据的 
OLAP,也支持对流式数据的准实时(Near real-time)以及完å…
¨å®žæ—¶(real-time)分析。用户可以使用一个 OLAP 
平台来服务不同的使用场景。此方案已经在早期用户如 eBay 
得到部署和验证。关于如何使用此功能,请参考&lt;a 
href=&quot;/docs30/tutorial/realtime_olap.html&quot;&gt;æ­¤æ•
 ™ç¨‹&lt;/a&gt;。&lt;/p&gt;
+&lt;h3 id=&quot;kylin-3654---real-time-olap&quot;&gt;KYLIN-3654 - Real-time 
OLAP&lt;/h3&gt;
+&lt;p&gt;With the newly introduced Kylin real-time receiver and coordinator 
components, Kylin can implement a millisecond-level data preparation delay for 
streaming data from sources like Apache Kafka. This means since v3.0 on,  Kylin 
can support sub-second level OLAP over historical batch data, near real-time 
streaming as well as real-time streaming. The user can use one OLAP platform to 
serve different scenarios. This solution has been deployed and verified in 
early adopters like eBay since 2018. For how to enable it, please refer to 
&lt;a href=&quot;/docs30/tutorial/realtime_olap.html&quot;&gt;this 
tutorial&lt;/a&gt;.&lt;/p&gt;
 
-&lt;h3 id=&quot;kylin-3795----apache-livy--spark-&quot;&gt;KYLIN-3795 - 通过 
Apache Livy 递交 Spark 任务&lt;/h3&gt;
-&lt;p&gt;这个功能允许管理员为 Kylin 配置使用 Apache Livy 
(incubating) 来完成任务的递交。Spark 作业的提交通过 Livy 的 
REST API 来提交,而无需在本地启动 Spark Driver 
进程,从而方便对 Spark 资源的管理监控,同时也降低对 Kylin 
任务进程所在节点的压力。&lt;/p&gt;
+&lt;h3 
id=&quot;kylin-3795---submit-spark-jobs-via-apache-livy&quot;&gt;KYLIN-3795 - 
Submit Spark jobs via Apache Livy&lt;/h3&gt;
+&lt;p&gt;This feature allows the administrator to configure Kylin to integrate 
with Apache Livy (incubating) for Spark job submissions. The Spark job is 
submitted to the Livy Server through Livy’s REST API, instead of starting the 
Spark Driver process in local, which facilitates the management and monitoring 
of the Spark resources, and also releases the pressure of the nodes where the 
Kylin job server is running.&lt;/p&gt;
 
-&lt;h3 id=&quot;kylin-3820----curator-&quot;&gt;KYLIN-3820 - 基于 Curator 
的任务节点分配和服务发现&lt;/h3&gt;
-&lt;p&gt;新增一种基于Apache Zookeeper 和 
Curator作业调度器,可以自动发现 Kylin 节点,并自动分é…
ä¸€ä¸ªèŠ‚点来进行任务的管理以及故
障恢复。有了这个功能后,管理员可以更加
容易地部署和扩展 Kylin 节点,而不再需要在 &lt;code 
class=&quot;highlighter-rouge&quot;&gt;kylin.properties&lt;/code&gt; 中é…
ç½®æ¯ä¸ª Kylin 节点的地址并重启 Kylin 以使之生效。&lt;/p&gt;
+&lt;h3 id=&quot;kylin-3820---a-curator-based-job-scheduler&quot;&gt;KYLIN-3820 
- A curator-based job scheduler&lt;/h3&gt;
+&lt;p&gt;A new job scheduler is added to automatically discover the Kylin 
nodes and do an automatic leader selection among them (only the leader will 
submit jobs). With this feature, you can easily deploy and scale out Kylin 
nodes without manually update the node address in &lt;code 
class=&quot;highlighter-rouge&quot;&gt;kylin.properties&lt;/code&gt; and 
restart Kylin to take effective.&lt;/p&gt;
 
-&lt;h1 id=&quot;section-1&quot;&gt;其它改进&lt;/h1&gt;
+&lt;h1 id=&quot;other-enhancements&quot;&gt;Other enhancements&lt;/h1&gt;
 
-&lt;h3 id=&quot;kylin-3716---fastthreadlocal--threadlocal&quot;&gt;KYLIN-3716 
- FastThreadLocal 替换 ThreadLocal&lt;/h3&gt;
-&lt;p&gt;使用 Netty 中的 FastThreadLocal 替代 JDK 原生的 
ThreadLocal,可以一定程度上提升 Kylin 
在高并发下的性能。&lt;/p&gt;
+&lt;h3 
id=&quot;kylin-3716---fastthreadlocal-replaces-threadlocal&quot;&gt;KYLIN-3716 
- FastThreadLocal replaces ThreadLocal&lt;/h3&gt;
+&lt;p&gt;Using FastThreadLocal instead of ThreadLocal can improve Kylin’s 
overall performance to some extent.&lt;/p&gt;
 
 &lt;h3 
id=&quot;kylin-3867---enable-jdbc-to-use-key-store--trust-store-for-https-connection&quot;&gt;KYLIN-3867
 - Enable JDBC to use key store &amp;amp; trust store for https 
connection&lt;/h3&gt;
-&lt;p&gt;通过使用HTTPS,保护了JDBC使用的身份验证信息,使得Kylin更åŠ
 å®‰å…¨&lt;/p&gt;
+&lt;p&gt;By using HTTPS, the authentication information used by JDBC is 
protected, making Kylin more secure.&lt;/p&gt;
 
 &lt;h3 
id=&quot;kylin-3905---enable-shrunken-dictionary-default&quot;&gt;KYLIN-3905 - 
Enable shrunken dictionary default&lt;/h3&gt;
-&lt;p&gt;默认开启 shrunken 
dictionary,针对高基维进行精确去重的场景,可以显著减少构建用时。&lt;/p&gt;
+&lt;p&gt;By default, the shrunken dictionary is enabled, and the precise 
counting scene for high cardinal dimensions can significantly reduce the build 
time.&lt;/p&gt;
 
 &lt;h3 
id=&quot;kylin-3839---storage-clean-up-after-the-refreshing-and-deleting-a-segment&quot;&gt;KYLIN-3839
 - Storage clean up after the refreshing and deleting a segment&lt;/h3&gt;
-&lt;p&gt;更加及时地清除不必要的数据文件&lt;/p&gt;
+&lt;p&gt;Clear unnecessary data files in a timely manner&lt;/p&gt;
 
-&lt;p&gt;&lt;strong&gt;下载&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/p&gt;
 
-&lt;p&gt;要下载Apache Kylin 源代码或二进制包,请访问&lt;a 
href=&quot;/download&quot;&gt;下载页面&lt;/a&gt; page.&lt;/p&gt;
+&lt;p&gt;To download Apache Kylin v3.0.0-alpha source code or binary package, 
visit the &lt;a 
href=&quot;http://kylin.apache.org/download&quot;&gt;download&lt;/a&gt; 
page.&lt;/p&gt;
 
-&lt;p&gt;&lt;strong&gt;升级&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Upgrade&lt;/strong&gt;&lt;/p&gt;
 
-&lt;p&gt;参考&lt;a 
href=&quot;/docs/howto/howto_upgrade.html&quot;&gt;升级指南&lt;/a&gt;.&lt;/p&gt;
+&lt;p&gt;Follow the &lt;a 
href=&quot;/docs/howto/howto_upgrade.html&quot;&gt;upgrade 
guide&lt;/a&gt;.&lt;/p&gt;
 
-&lt;p&gt;&lt;strong&gt;反馈&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Feedback&lt;/strong&gt;&lt;/p&gt;
 
-&lt;p&gt;如果您遇到问题或疑问,请发送邮件至 Apache Kylin dev 
或 user 邮件列表:d...@kylin.apache.org,u...@kylin.apache.org; 
在发送之前,请确保您已通过发送电子邮件至 
dev-subscr...@kylin.apache.org 或 user-subscr...@kylin.apache.org 订阅
了邮件列表。&lt;/p&gt;
+&lt;p&gt;If you face issue or question, please send mail to Apache Kylin dev 
or user mailing list: d...@kylin.apache.org , u...@kylin.apache.org; Before 
sending, please make sure you have subscribed the mailing list by dropping an 
email to dev-subscr...@kylin.apache.org or 
user-subscr...@kylin.apache.org.&lt;/p&gt;
 
-&lt;p&gt;&lt;em&gt;非常感谢所有贡献Apache 
Kylin的朋友!&lt;/em&gt;&lt;/p&gt;
+&lt;p&gt;&lt;em&gt;Great thanks to everyone who 
contributed!&lt;/em&gt;&lt;/p&gt;
 </description>
         <pubDate>Fri, 19 Apr 2019 13:00:00 -0700</pubDate>
-        
<link>http://kylin.apache.org/cn_blog/2019/04/19/release-v3.0.0-alpha/</link>
-        <guid 
isPermaLink="true">http://kylin.apache.org/cn_blog/2019/04/19/release-v3.0.0-alpha/</guid>
+        
<link>http://kylin.apache.org/blog/2019/04/19/release-v3.0.0-alpha/</link>
+        <guid 
isPermaLink="true">http://kylin.apache.org/blog/2019/04/19/release-v3.0.0-alpha/</guid>
         
         
-        <category>cn_blog</category>
+        <category>blog</category>
         
       </item>
     
       <item>
-        <title>Apache Kylin v3.0.0-alpha Release Announcement</title>
-        <description>&lt;p&gt;The Apache Kylin community is pleased to 
announce the release of Apache Kylin v3.0.0-alpha.&lt;/p&gt;
+        <title>Apache Kylin v3.0.0-alpha 发布</title>
+        <description>&lt;p&gt;近日 Apache Kylin 社区很高å…
´åœ°å®£å¸ƒï¼ŒApache Kylin v3.0.0-alpha 正式发布。&lt;/p&gt;
 
-&lt;p&gt;Apache Kylin is an open source Distributed Analytics Engine designed 
to provide SQL interface and multi-dimensional analysis (OLAP) on Big Data 
supporting extremely large datasets.&lt;/p&gt;
+&lt;p&gt;Apache Kylin 
是一个开源的分布式分析引擎,旨在为极大数据集提供 SQL 
接口和多维分析(OLAP)的能力。&lt;/p&gt;
 
-&lt;p&gt;This is the first release of the new generation v3.x, the main 
feature introduced is the Real-time OLAP. All of the changes can be found in 
the &lt;a href=&quot;/docs/release_notes.html&quot;&gt;release 
notes&lt;/a&gt;. Here we just highlight the main features.&lt;/p&gt;
+&lt;p&gt;这是 Kylin 下一代 v3.x 
的第一个发布版本,用于早期预览,主要的功能是实时 
(Real-time) OLAP。完整的改动列表请参见&lt;a 
href=&quot;/docs/release_notes.html&quot;&gt;release 
notes&lt;/a&gt;;这里挑一些主要改进做说明。&lt;/p&gt;
 
-&lt;h1 id=&quot;important-features&quot;&gt;Important features&lt;/h1&gt;
+&lt;h1 id=&quot;section&quot;&gt;重要新功能&lt;/h1&gt;
 
-&lt;h3 id=&quot;kylin-3654---real-time-olap&quot;&gt;KYLIN-3654 - Real-time 
OLAP&lt;/h3&gt;
-&lt;p&gt;With the newly introduced Kylin real-time receiver and coordinator 
components, Kylin can implement a millisecond-level data preparation delay for 
streaming data from sources like Apache Kafka. This means since v3.0 on,  Kylin 
can support sub-second level OLAP over historical batch data, near real-time 
streaming as well as real-time streaming. The user can use one OLAP platform to 
serve different scenarios. This solution has been deployed and verified in 
early adopters like eBay since 2018. For how to enable it, please refer to 
&lt;a href=&quot;/docs30/tutorial/realtime_olap.html&quot;&gt;this 
tutorial&lt;/a&gt;.&lt;/p&gt;
+&lt;h3 id=&quot;kylin-3654----olap&quot;&gt;KYLIN-3654 - 实时 OLAP&lt;/h3&gt;
+&lt;p&gt;随着引入新的 real-time receiver 和 coordinator 组件,Kylin 
能够实现毫秒级别的数据准备延迟,数据源来自流式数据如 
Apache Kafka。这意味着,从 v3.0 开始,Kylin 
既能够支持历史批量数据的 
OLAP,也支持对流式数据的准实时(Near real-time)以及完å…
¨å®žæ—¶(real-time)分析。用户可以使用一个 OLAP 
平台来服务不同的使用场景。此方案已经在早期用户如 eBay 
得到部署和验证。关于如何使用此功能,请参考&lt;a 
href=&quot;/docs30/tutorial/realtime_olap.html&quot;&gt;æ­¤æ•
 ™ç¨‹&lt;/a&gt;。&lt;/p&gt;
 
-&lt;h3 
id=&quot;kylin-3795---submit-spark-jobs-via-apache-livy&quot;&gt;KYLIN-3795 - 
Submit Spark jobs via Apache Livy&lt;/h3&gt;
-&lt;p&gt;This feature allows the administrator to configure Kylin to integrate 
with Apache Livy (incubating) for Spark job submissions. The Spark job is 
submitted to the Livy Server through Livy’s REST API, instead of starting the 
Spark Driver process in local, which facilitates the management and monitoring 
of the Spark resources, and also releases the pressure of the nodes where the 
Kylin job server is running.&lt;/p&gt;
+&lt;h3 id=&quot;kylin-3795----apache-livy--spark-&quot;&gt;KYLIN-3795 - 通过 
Apache Livy 递交 Spark 任务&lt;/h3&gt;
+&lt;p&gt;这个功能允许管理员为 Kylin 配置使用 Apache Livy 
(incubating) 来完成任务的递交。Spark 作业的提交通过 Livy 的 
REST API 来提交,而无需在本地启动 Spark Driver 
进程,从而方便对 Spark 资源的管理监控,同时也降低对 Kylin 
任务进程所在节点的压力。&lt;/p&gt;
 
-&lt;h3 id=&quot;kylin-3820---a-curator-based-job-scheduler&quot;&gt;KYLIN-3820 
- A curator-based job scheduler&lt;/h3&gt;
-&lt;p&gt;A new job scheduler is added to automatically discover the Kylin 
nodes and do an automatic leader selection among them (only the leader will 
submit jobs). With this feature, you can easily deploy and scale out Kylin 
nodes without manually update the node address in &lt;code 
class=&quot;highlighter-rouge&quot;&gt;kylin.properties&lt;/code&gt; and 
restart Kylin to take effective.&lt;/p&gt;
+&lt;h3 id=&quot;kylin-3820----curator-&quot;&gt;KYLIN-3820 - 基于 Curator 
的任务节点分配和服务发现&lt;/h3&gt;
+&lt;p&gt;新增一种基于Apache Zookeeper 和 
Curator作业调度器,可以自动发现 Kylin 节点,并自动分é…
ä¸€ä¸ªèŠ‚点来进行任务的管理以及故
障恢复。有了这个功能后,管理员可以更加
容易地部署和扩展 Kylin 节点,而不再需要在 &lt;code 
class=&quot;highlighter-rouge&quot;&gt;kylin.properties&lt;/code&gt; 中é…
ç½®æ¯ä¸ª Kylin 节点的地址并重启 Kylin 以使之生效。&lt;/p&gt;
 
-&lt;h1 id=&quot;other-enhancements&quot;&gt;Other enhancements&lt;/h1&gt;
+&lt;h1 id=&quot;section-1&quot;&gt;其它改进&lt;/h1&gt;
 
-&lt;h3 
id=&quot;kylin-3716---fastthreadlocal-replaces-threadlocal&quot;&gt;KYLIN-3716 
- FastThreadLocal replaces ThreadLocal&lt;/h3&gt;
-&lt;p&gt;Using FastThreadLocal instead of ThreadLocal can improve Kylin’s 
overall performance to some extent.&lt;/p&gt;
+&lt;h3 id=&quot;kylin-3716---fastthreadlocal--threadlocal&quot;&gt;KYLIN-3716 
- FastThreadLocal 替换 ThreadLocal&lt;/h3&gt;
+&lt;p&gt;使用 Netty 中的 FastThreadLocal 替代 JDK 原生的 
ThreadLocal,可以一定程度上提升 Kylin 
在高并发下的性能。&lt;/p&gt;
 
 &lt;h3 
id=&quot;kylin-3867---enable-jdbc-to-use-key-store--trust-store-for-https-connection&quot;&gt;KYLIN-3867
 - Enable JDBC to use key store &amp;amp; trust store for https 
connection&lt;/h3&gt;
-&lt;p&gt;By using HTTPS, the authentication information used by JDBC is 
protected, making Kylin more secure.&lt;/p&gt;
+&lt;p&gt;通过使用HTTPS,保护了JDBC使用的身份验证信息,使得Kylin更åŠ
 å®‰å…¨&lt;/p&gt;
 
 &lt;h3 
id=&quot;kylin-3905---enable-shrunken-dictionary-default&quot;&gt;KYLIN-3905 - 
Enable shrunken dictionary default&lt;/h3&gt;
-&lt;p&gt;By default, the shrunken dictionary is enabled, and the precise 
counting scene for high cardinal dimensions can significantly reduce the build 
time.&lt;/p&gt;
+&lt;p&gt;默认开启 shrunken 
dictionary,针对高基维进行精确去重的场景,可以显著减少构建用时。&lt;/p&gt;
 
 &lt;h3 
id=&quot;kylin-3839---storage-clean-up-after-the-refreshing-and-deleting-a-segment&quot;&gt;KYLIN-3839
 - Storage clean up after the refreshing and deleting a segment&lt;/h3&gt;
-&lt;p&gt;Clear unnecessary data files in a timely manner&lt;/p&gt;
+&lt;p&gt;更加及时地清除不必要的数据文件&lt;/p&gt;
 
-&lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;下载&lt;/strong&gt;&lt;/p&gt;
 
-&lt;p&gt;To download Apache Kylin v3.0.0-alpha source code or binary package, 
visit the &lt;a 
href=&quot;http://kylin.apache.org/download&quot;&gt;download&lt;/a&gt; 
page.&lt;/p&gt;
+&lt;p&gt;要下载Apache Kylin 源代码或二进制包,请访问&lt;a 
href=&quot;/download&quot;&gt;下载页面&lt;/a&gt; page.&lt;/p&gt;
 
-&lt;p&gt;&lt;strong&gt;Upgrade&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;升级&lt;/strong&gt;&lt;/p&gt;
 
-&lt;p&gt;Follow the &lt;a 
href=&quot;/docs/howto/howto_upgrade.html&quot;&gt;upgrade 
guide&lt;/a&gt;.&lt;/p&gt;
+&lt;p&gt;参考&lt;a 
href=&quot;/docs/howto/howto_upgrade.html&quot;&gt;升级指南&lt;/a&gt;.&lt;/p&gt;
 
-&lt;p&gt;&lt;strong&gt;Feedback&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;反馈&lt;/strong&gt;&lt;/p&gt;
 
-&lt;p&gt;If you face issue or question, please send mail to Apache Kylin dev 
or user mailing list: d...@kylin.apache.org , u...@kylin.apache.org; Before 
sending, please make sure you have subscribed the mailing list by dropping an 
email to dev-subscr...@kylin.apache.org or 
user-subscr...@kylin.apache.org.&lt;/p&gt;
+&lt;p&gt;如果您遇到问题或疑问,请发送邮件至 Apache Kylin dev 
或 user 邮件列表:d...@kylin.apache.org,u...@kylin.apache.org; 
在发送之前,请确保您已通过发送电子邮件至 
dev-subscr...@kylin.apache.org 或 user-subscr...@kylin.apache.org 订阅
了邮件列表。&lt;/p&gt;
 
-&lt;p&gt;&lt;em&gt;Great thanks to everyone who 
contributed!&lt;/em&gt;&lt;/p&gt;
+&lt;p&gt;&lt;em&gt;非常感谢所有贡献Apache 
Kylin的朋友!&lt;/em&gt;&lt;/p&gt;
 </description>
         <pubDate>Fri, 19 Apr 2019 13:00:00 -0700</pubDate>
-        
<link>http://kylin.apache.org/blog/2019/04/19/release-v3.0.0-alpha/</link>
-        <guid 
isPermaLink="true">http://kylin.apache.org/blog/2019/04/19/release-v3.0.0-alpha/</guid>
+        
<link>http://kylin.apache.org/cn_blog/2019/04/19/release-v3.0.0-alpha/</link>
+        <guid 
isPermaLink="true">http://kylin.apache.org/cn_blog/2019/04/19/release-v3.0.0-alpha/</guid>
         
         
-        <category>blog</category>
+        <category>cn_blog</category>
         
       </item>
     
@@ -1455,84 +1455,6 @@ The checkpoint info is the smallest part
       </item>
     
       <item>
-        <title>Apache Kylin v2.6.0 Release Announcement</title>
-        <description>&lt;p&gt;The Apache Kylin community is pleased to 
announce the release of Apache Kylin v2.6.0.&lt;/p&gt;
-
-&lt;p&gt;Apache Kylin is an open source Distributed Analytics Engine designed 
to provide SQL interface and multi-dimensional analysis (OLAP) on Big Data 
supporting extremely large datasets.&lt;/p&gt;
-
-&lt;p&gt;This is a major release after 2.5.0, including many enhancements. All 
of the changes can be found in the &lt;a 
href=&quot;https://kylin.apache.org/docs/release_notes.html&quot;&gt;release 
notes&lt;/a&gt;. Here just highlight the major ones:&lt;/p&gt;
-
-&lt;h3 id=&quot;sdk-for-jdbc-sources&quot;&gt;SDK for JDBC sources&lt;/h3&gt;
-&lt;p&gt;Apache Kylin has already supported several data sources like Amazon 
Redshift, SQL Server through JDBC. &lt;br /&gt;
-To help developers handle SQL dialect differences and easily implement a new 
data source through JDBC, Kylin provides a new data source SDK with APIs 
for:&lt;br /&gt;
-* Synchronize metadata and data from JDBC source&lt;br /&gt;
-* Build cube from JDBC source&lt;br /&gt;
-* Query pushdown to JDBC source engine when cube is unmatched&lt;/p&gt;
-
-&lt;p&gt;Check KYLIN-3552 for more.&lt;/p&gt;
-
-&lt;h3 id=&quot;memcached-as-distributed-cache&quot;&gt;Memcached as 
distributed cache&lt;/h3&gt;
-&lt;p&gt;In the past, query caches are not efficiently used in Kylin due to 
two aspects: aggressive cache expiration strategy and local cache. &lt;br /&gt;
-Because of the aggressive cache expiration strategy, useful caches are often 
cleaned up unnecessarily. &lt;br /&gt;
-Because query caches are stored in local servers, they cannot be shared 
between servers. &lt;br /&gt;
-And because of the size limitation of local cache, not all useful query 
results can be cached.&lt;/p&gt;
-
-&lt;p&gt;To deal with these shortcomings, we change the query cache expiration 
strategy by signature checking and introduce the memcached as Kylin’s 
distributed cache so that Kylin servers are able to share cache between 
servers. &lt;br /&gt;
-And it’s easy to add memcached servers to scale out distributed cache. With 
enough memcached servers, we can cached things as much as possible. &lt;br /&gt;
-Then we also introduce segment level query cache which can not only speed up 
query but also reduce the rpcs to HBase. &lt;br /&gt;
-The related tasks are KYLIN-2895, KYLIN-2894, KYLIN-2896, KYLIN-2897, 
KYLIN-2898, KYLIN-2899.&lt;/p&gt;
-
-&lt;h3 id=&quot;forkjoinpool-for-fast-cubing&quot;&gt;ForkJoinPool for fast 
cubing&lt;/h3&gt;
-&lt;p&gt;In the past, fast cubing uses split threads, task threads and main 
thread to do the cube building, there is complex join and error handling 
logic.&lt;/p&gt;
-
-&lt;p&gt;The new implement leverages the ForkJoinPool from JDK, the event 
split logic is handled in&lt;br /&gt;
-main thread. Cuboid task and sub-tasks are handled in fork join pool, cube 
results are collected&lt;br /&gt;
-async and can be write to output earlier. Check KYLIN-2932 for more.&lt;/p&gt;
-
-&lt;h3 id=&quot;improve-hllcounter-performance&quot;&gt;Improve HLLCounter 
performance&lt;/h3&gt;
-&lt;p&gt;In the past, the way to create HLLCounter and to compute harmonic 
mean are not efficient.&lt;/p&gt;
-
-&lt;p&gt;The new implement improve the HLLCounter creation by copy register 
from another HLLCounter instead of merge. To compute harmonic mean in the 
HLLCSnapshot, it does the enhancement by &lt;br /&gt;
-* using table to cache all 1/2^r  without computing on the fly&lt;br /&gt;
-* remove floating addition by using integer addition in the bigger loop&lt;br 
/&gt;
-* remove branch, e.g. needn’t checking whether registers[i] is zero or not, 
although this is minor improvement.&lt;/p&gt;
-
-&lt;p&gt;Check KYLIN-3656 for more.&lt;/p&gt;
-
-&lt;h3 id=&quot;improve-cuboid-recommendation-algorithm&quot;&gt;Improve 
Cuboid Recommendation Algorithm&lt;/h3&gt;
-&lt;p&gt;In the past, to add cuboids which are not prebuilt, the cube planner 
turns to mandatory cuboids which are selected if its rollup row count is above 
some threshold. &lt;br /&gt;
-There are two shortcomings:&lt;br /&gt;
-* The way to estimate the rollup row count is not good&lt;br /&gt;
-* It’s hard to determine the threshold of rollup row count for recommending 
mandatory cuboids&lt;/p&gt;
-
-&lt;p&gt;The new implement improves the way to estimate the row count of 
un-prebuilt cuboids by rollup ratio rather than exact rollup row count. &lt;br 
/&gt;
-With better estimated row counts for un-prebuilt cuboids, the cost-based cube 
planner algorithm will decide which cuboid to be built or not and the threshold 
for previous mandatory cuboids is not needed. &lt;br /&gt;
-By this improvement, we don’t need the threshold for mandatory cuboids 
recommendation, and mandatory cuboids can only be manually set and will not be 
recommended. Check KYLIN-3540 for more.&lt;/p&gt;
-
-&lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/p&gt;
-
-&lt;p&gt;To download Apache Kylin v2.6.0 source code or binary package, visit 
the &lt;a 
href=&quot;http://kylin.apache.org/download&quot;&gt;download&lt;/a&gt; 
page.&lt;/p&gt;
-
-&lt;p&gt;&lt;strong&gt;Upgrade&lt;/strong&gt;&lt;/p&gt;
-
-&lt;p&gt;Follow the &lt;a 
href=&quot;/docs/howto/howto_upgrade.html&quot;&gt;upgrade 
guide&lt;/a&gt;.&lt;/p&gt;
-
-&lt;p&gt;&lt;strong&gt;Feedback&lt;/strong&gt;&lt;/p&gt;
-
-&lt;p&gt;If you face issue or question, please send mail to Apache Kylin dev 
or user mailing list: d...@kylin.apache.org , u...@kylin.apache.org; Before 
sending, please make sure you have subscribed the mailing list by dropping an 
email to dev-subscr...@kylin.apache.org or 
user-subscr...@kylin.apache.org.&lt;/p&gt;
-
-&lt;p&gt;&lt;em&gt;Great thanks to everyone who 
contributed!&lt;/em&gt;&lt;/p&gt;
-</description>
-        <pubDate>Fri, 18 Jan 2019 12:00:00 -0800</pubDate>
-        <link>http://kylin.apache.org/blog/2019/01/18/release-v2.6.0/</link>
-        <guid 
isPermaLink="true">http://kylin.apache.org/blog/2019/01/18/release-v2.6.0/</guid>
-        
-        
-        <category>blog</category>
-        
-      </item>
-    
-      <item>
         <title>Apache Kylin v2.6.0 正式发布</title>
         <description>&lt;p&gt;近日Apache Kylin 社区很高å…
´åœ°å®£å¸ƒï¼ŒApache Kylin 2.6.0 正式发布。&lt;/p&gt;
 
@@ -1611,5 +1533,83 @@ By this improvement, we don’t need
         
       </item>
     
+      <item>
+        <title>Apache Kylin v2.6.0 Release Announcement</title>
+        <description>&lt;p&gt;The Apache Kylin community is pleased to 
announce the release of Apache Kylin v2.6.0.&lt;/p&gt;
+
+&lt;p&gt;Apache Kylin is an open source Distributed Analytics Engine designed 
to provide SQL interface and multi-dimensional analysis (OLAP) on Big Data 
supporting extremely large datasets.&lt;/p&gt;
+
+&lt;p&gt;This is a major release after 2.5.0, including many enhancements. All 
of the changes can be found in the &lt;a 
href=&quot;https://kylin.apache.org/docs/release_notes.html&quot;&gt;release 
notes&lt;/a&gt;. Here just highlight the major ones:&lt;/p&gt;
+
+&lt;h3 id=&quot;sdk-for-jdbc-sources&quot;&gt;SDK for JDBC sources&lt;/h3&gt;
+&lt;p&gt;Apache Kylin has already supported several data sources like Amazon 
Redshift, SQL Server through JDBC. &lt;br /&gt;
+To help developers handle SQL dialect differences and easily implement a new 
data source through JDBC, Kylin provides a new data source SDK with APIs 
for:&lt;br /&gt;
+* Synchronize metadata and data from JDBC source&lt;br /&gt;
+* Build cube from JDBC source&lt;br /&gt;
+* Query pushdown to JDBC source engine when cube is unmatched&lt;/p&gt;
+
+&lt;p&gt;Check KYLIN-3552 for more.&lt;/p&gt;
+
+&lt;h3 id=&quot;memcached-as-distributed-cache&quot;&gt;Memcached as 
distributed cache&lt;/h3&gt;
+&lt;p&gt;In the past, query caches are not efficiently used in Kylin due to 
two aspects: aggressive cache expiration strategy and local cache. &lt;br /&gt;
+Because of the aggressive cache expiration strategy, useful caches are often 
cleaned up unnecessarily. &lt;br /&gt;
+Because query caches are stored in local servers, they cannot be shared 
between servers. &lt;br /&gt;
+And because of the size limitation of local cache, not all useful query 
results can be cached.&lt;/p&gt;
+
+&lt;p&gt;To deal with these shortcomings, we change the query cache expiration 
strategy by signature checking and introduce the memcached as Kylin’s 
distributed cache so that Kylin servers are able to share cache between 
servers. &lt;br /&gt;
+And it’s easy to add memcached servers to scale out distributed cache. With 
enough memcached servers, we can cached things as much as possible. &lt;br /&gt;
+Then we also introduce segment level query cache which can not only speed up 
query but also reduce the rpcs to HBase. &lt;br /&gt;
+The related tasks are KYLIN-2895, KYLIN-2894, KYLIN-2896, KYLIN-2897, 
KYLIN-2898, KYLIN-2899.&lt;/p&gt;
+
+&lt;h3 id=&quot;forkjoinpool-for-fast-cubing&quot;&gt;ForkJoinPool for fast 
cubing&lt;/h3&gt;
+&lt;p&gt;In the past, fast cubing uses split threads, task threads and main 
thread to do the cube building, there is complex join and error handling 
logic.&lt;/p&gt;
+
+&lt;p&gt;The new implement leverages the ForkJoinPool from JDK, the event 
split logic is handled in&lt;br /&gt;
+main thread. Cuboid task and sub-tasks are handled in fork join pool, cube 
results are collected&lt;br /&gt;
+async and can be write to output earlier. Check KYLIN-2932 for more.&lt;/p&gt;
+
+&lt;h3 id=&quot;improve-hllcounter-performance&quot;&gt;Improve HLLCounter 
performance&lt;/h3&gt;
+&lt;p&gt;In the past, the way to create HLLCounter and to compute harmonic 
mean are not efficient.&lt;/p&gt;
+
+&lt;p&gt;The new implement improve the HLLCounter creation by copy register 
from another HLLCounter instead of merge. To compute harmonic mean in the 
HLLCSnapshot, it does the enhancement by &lt;br /&gt;
+* using table to cache all 1/2^r  without computing on the fly&lt;br /&gt;
+* remove floating addition by using integer addition in the bigger loop&lt;br 
/&gt;
+* remove branch, e.g. needn’t checking whether registers[i] is zero or not, 
although this is minor improvement.&lt;/p&gt;
+
+&lt;p&gt;Check KYLIN-3656 for more.&lt;/p&gt;
+
+&lt;h3 id=&quot;improve-cuboid-recommendation-algorithm&quot;&gt;Improve 
Cuboid Recommendation Algorithm&lt;/h3&gt;
+&lt;p&gt;In the past, to add cuboids which are not prebuilt, the cube planner 
turns to mandatory cuboids which are selected if its rollup row count is above 
some threshold. &lt;br /&gt;
+There are two shortcomings:&lt;br /&gt;
+* The way to estimate the rollup row count is not good&lt;br /&gt;
+* It’s hard to determine the threshold of rollup row count for recommending 
mandatory cuboids&lt;/p&gt;
+
+&lt;p&gt;The new implement improves the way to estimate the row count of 
un-prebuilt cuboids by rollup ratio rather than exact rollup row count. &lt;br 
/&gt;
+With better estimated row counts for un-prebuilt cuboids, the cost-based cube 
planner algorithm will decide which cuboid to be built or not and the threshold 
for previous mandatory cuboids is not needed. &lt;br /&gt;
+By this improvement, we don’t need the threshold for mandatory cuboids 
recommendation, and mandatory cuboids can only be manually set and will not be 
recommended. Check KYLIN-3540 for more.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/p&gt;
+
+&lt;p&gt;To download Apache Kylin v2.6.0 source code or binary package, visit 
the &lt;a 
href=&quot;http://kylin.apache.org/download&quot;&gt;download&lt;/a&gt; 
page.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Upgrade&lt;/strong&gt;&lt;/p&gt;
+
+&lt;p&gt;Follow the &lt;a 
href=&quot;/docs/howto/howto_upgrade.html&quot;&gt;upgrade 
guide&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Feedback&lt;/strong&gt;&lt;/p&gt;
+
+&lt;p&gt;If you face issue or question, please send mail to Apache Kylin dev 
or user mailing list: d...@kylin.apache.org , u...@kylin.apache.org; Before 
sending, please make sure you have subscribed the mailing list by dropping an 
email to dev-subscr...@kylin.apache.org or 
user-subscr...@kylin.apache.org.&lt;/p&gt;
+
+&lt;p&gt;&lt;em&gt;Great thanks to everyone who 
contributed!&lt;/em&gt;&lt;/p&gt;
+</description>
+        <pubDate>Fri, 18 Jan 2019 12:00:00 -0800</pubDate>
+        <link>http://kylin.apache.org/blog/2019/01/18/release-v2.6.0/</link>
+        <guid 
isPermaLink="true">http://kylin.apache.org/blog/2019/01/18/release-v2.6.0/</guid>
+        
+        
+        <category>blog</category>
+        
+      </item>
+    
   </channel>
 </rss>

Added: kylin/site/images/Hive-Global-Dictionary/cube-level-config.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/Hive-Global-Dictionary/cube-level-config.png?rev=1864708&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/Hive-Global-Dictionary/cube-level-config.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/Hive-Global-Dictionary/hive-global-dict-table.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/Hive-Global-Dictionary/hive-global-dict-table.png?rev=1864708&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/Hive-Global-Dictionary/hive-global-dict-table.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/Hive-Global-Dictionary/set-hive-dict-column.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/Hive-Global-Dictionary/set-hive-dict-column.png?rev=1864708&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/Hive-Global-Dictionary/set-hive-dict-column.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/Hive-Global-Dictionary/three-added-steps.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/Hive-Global-Dictionary/three-added-steps.png?rev=1864708&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/Hive-Global-Dictionary/three-added-steps.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream


Reply via email to