Author: lidong
Date: Fri Jun 18 02:57:25 2021
New Revision: 1890886
URL: http://svn.apache.org/viewvc?rev=1890886&view=rev
Log:
Update doc4
Added:
kylin/site/blog/2021/
kylin/site/blog/2021/06/
kylin/site/blog/2021/06/17/
kylin/site/blog/2021/06/17/Why-did-Youzan-choose-Kylin4/
kylin/site/blog/2021/06/17/Why-did-Youzan-choose-Kylin4/index.html
kylin/site/cn_blog/2021/
kylin/site/cn_blog/2021/06/
kylin/site/cn_blog/2021/06/17/
kylin/site/cn_blog/2021/06/17/Why-did-Youzan-choose-Kylin4/
kylin/site/cn_blog/2021/06/17/Why-did-Youzan-choose-Kylin4/index.html
kylin/site/images/blog/youzan/
kylin/site/images/blog/youzan/1 history_of_youzan_OLAP.png (with props)
kylin/site/images/blog/youzan/10 commodity_insight.png (with props)
kylin/site/images/blog/youzan/2 kylin4_storage.png (with props)
kylin/site/images/blog/youzan/3 kylin4_build_engine.png (with props)
kylin/site/images/blog/youzan/4 kylin4_query.png (with props)
kylin/site/images/blog/youzan/5 cache_calcite_plan.png (with props)
kylin/site/images/blog/youzan/6 tuning_spark_configuration.png (with
props)
kylin/site/images/blog/youzan/7 parquet_optimization.png (with props)
kylin/site/images/blog/youzan/8
Dynamic_elimination_of_partitioning_dimensions.png (with props)
kylin/site/images/blog/youzan/9 cache_parent_dataset.png (with props)
kylin/site/images/blog/youzan_cn/
kylin/site/images/blog/youzan_cn/1 kylin4_storage.png (with props)
kylin/site/images/blog/youzan_cn/10 Processing data skew.png (with props)
kylin/site/images/blog/youzan_cn/11 metadata_upgrade.png (with props)
kylin/site/images/blog/youzan_cn/12 commodity_insight.png (with props)
kylin/site/images/blog/youzan_cn/13 cube_query.png (with props)
kylin/site/images/blog/youzan_cn/14 youzan_plan.png (with props)
kylin/site/images/blog/youzan_cn/2 kylin4_build_engine.png (with props)
kylin/site/images/blog/youzan_cn/3 kylin4_query.png (with props)
kylin/site/images/blog/youzan_cn/4
dynamic_elimination_dimension_partition.png (with props)
kylin/site/images/blog/youzan_cn/5 Partition clipping under complex
filter.png (with props)
kylin/site/images/blog/youzan_cn/6 tuning_spark_configuration.png (with
props)
kylin/site/images/blog/youzan_cn/8 small_query_optimization.png (with
props)
kylin/site/images/blog/youzan_cn/9 cache_parent_dataset.png (with props)
Modified:
kylin/site/blog/index.html
kylin/site/cn/blog/index.html
kylin/site/cn/docs40/gettingstarted/faq.html
kylin/site/cn/docs40/gettingstarted/kylin-quickstart.html
kylin/site/cn/docs40/howto/howto_backup_metadata.html
kylin/site/cn/docs40/howto/howto_build_cube_with_restapi.html
kylin/site/cn/docs40/howto/howto_cleanup_storage.html
kylin/site/cn/docs40/howto/howto_jdbc.html
kylin/site/cn/docs40/howto/howto_optimize_build_and_query.html
kylin/site/cn/docs40/howto/howto_use_cli.html
kylin/site/cn/docs40/howto/howto_use_restapi.html
kylin/site/cn/docs40/index.html
kylin/site/cn/docs40/install/advance_settings.html
kylin/site/cn/docs40/install/configuration.html
kylin/site/cn/docs40/install/index.html
kylin/site/cn/docs40/install/kylin_cluster.html
kylin/site/cn/docs40/install/kylin_docker.html
kylin/site/cn/docs40/tutorial/Qlik.html
kylin/site/cn/docs40/tutorial/acl.html
kylin/site/cn/docs40/tutorial/create_cube.html
kylin/site/cn/docs40/tutorial/cube_build_job.html
kylin/site/cn/docs40/tutorial/jdbc.html
kylin/site/cn/docs40/tutorial/kylin_client_tool.html
kylin/site/cn/docs40/tutorial/mysql_metastore.html
kylin/site/cn/docs40/tutorial/odbc.html
kylin/site/cn/docs40/tutorial/powerbi.html
kylin/site/cn/docs40/tutorial/project_level_acl.html
kylin/site/cn/docs40/tutorial/query_pushdown.html
kylin/site/cn/docs40/tutorial/setup_systemcube.html
kylin/site/cn/docs40/tutorial/sql_reference.html
kylin/site/cn/docs40/tutorial/squirrel.html
kylin/site/cn/docs40/tutorial/superset.html
kylin/site/cn/docs40/tutorial/tableau.html
kylin/site/cn/docs40/tutorial/tableau_91.html
kylin/site/cn/docs40/tutorial/use_cube_planner.html
kylin/site/cn/docs40/tutorial/use_dashboard.html
kylin/site/cn/docs40/tutorial/web.html
kylin/site/docs40/gettingstarted/best_practices.html
kylin/site/docs40/gettingstarted/concepts.html
kylin/site/docs40/gettingstarted/events.html
kylin/site/docs40/gettingstarted/faq.html
kylin/site/docs40/gettingstarted/kylin-quickstart.html
kylin/site/docs40/gettingstarted/terminology.html
kylin/site/docs40/howto/howto_backup_metadata.html
kylin/site/docs40/howto/howto_build_cube_with_restapi.html
kylin/site/docs40/howto/howto_cleanup_storage.html
kylin/site/docs40/howto/howto_config_spark_pool.html
kylin/site/docs40/howto/howto_enable_zookeeper_acl.html
kylin/site/docs40/howto/howto_install_ranger_kylin_plugin.html
kylin/site/docs40/howto/howto_jdbc.html
kylin/site/docs40/howto/howto_ldap_and_sso.html
kylin/site/docs40/howto/howto_optimize_build_and_query.html
kylin/site/docs40/howto/howto_upgrade.html
kylin/site/docs40/howto/howto_use_cli.html
kylin/site/docs40/howto/howto_use_restapi.html
kylin/site/docs40/howto/howto_use_restapi_in_js.html
kylin/site/docs40/index.html
kylin/site/docs40/install/advance_settings.html
kylin/site/docs40/install/configuration.html
kylin/site/docs40/install/index.html
kylin/site/docs40/install/kylin_cluster.html
kylin/site/docs40/install/kylin_docker.html
kylin/site/docs40/release_notes.html
kylin/site/docs40/security.html
kylin/site/docs40/tutorial/Qlik.html
kylin/site/docs40/tutorial/acl.html
kylin/site/docs40/tutorial/create_cube.html
kylin/site/docs40/tutorial/cube_build_job.html
kylin/site/docs40/tutorial/jdbc.html
kylin/site/docs40/tutorial/kylin_client_tool.html
kylin/site/docs40/tutorial/microstrategy.html
kylin/site/docs40/tutorial/mysql_metastore.html
kylin/site/docs40/tutorial/odbc.html
kylin/site/docs40/tutorial/powerbi.html
kylin/site/docs40/tutorial/project_level_acl.html
kylin/site/docs40/tutorial/query_pushdown.html
kylin/site/docs40/tutorial/setup_systemcube.html
kylin/site/docs40/tutorial/sql_reference.html
kylin/site/docs40/tutorial/squirrel.html
kylin/site/docs40/tutorial/superset.html
kylin/site/docs40/tutorial/tableau.html
kylin/site/docs40/tutorial/tableau_91.html
kylin/site/docs40/tutorial/use_cube_planner.html
kylin/site/docs40/tutorial/use_dashboard.html
kylin/site/docs40/tutorial/web.html
kylin/site/feed.xml
kylin/site/images/docs/quickstart/advance_setting.png
Added: kylin/site/blog/2021/06/17/Why-did-Youzan-choose-Kylin4/index.html
URL:
http://svn.apache.org/viewvc/kylin/site/blog/2021/06/17/Why-did-Youzan-choose-Kylin4/index.html?rev=1890886&view=auto
==============================================================================
--- kylin/site/blog/2021/06/17/Why-did-Youzan-choose-Kylin4/index.html (added)
+++ kylin/site/blog/2021/06/17/Why-did-Youzan-choose-Kylin4/index.html Fri Jun
18 02:57:25 2021
@@ -0,0 +1,9050 @@
+<!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+-->
+<!doctype html>
+<html>
+ <!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+-->
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <title>Apache Kylin | Why did Youzan choose Kylin4</title>
+ <meta name="description" content="At the QCon Global Software Developers
Conference held on May 29, 2021, Zheng Shengjun, head of Youzanâs data
infrastructure platform, shared Youzanâs intern...">
+ <meta name="author" content="Apache Kylin">
+ <link rel="shortcut icon" href="fav.png" type="image/png">
+
+
+
+<link rel="stylesheet" href="/assets/css/animate.css">
+<!-- Bootstrap -->
+<link rel="stylesheet" href="/assets/css/bootstrap.min.css">
+
+<!-- Fonts -->
+<!-- <link rel="stylesheet"
href="http://fonts.googleapis.com/css?family=Alice|Open+Sans:400,300,700"> -->
+
+<!-- Icons -->
+<link rel="stylesheet" href="/assets/css/font-awesome.min.css">
+
+ <!-- Custom styles -->
+ <link rel="stylesheet" href="/assets/css/styles.css">
+ <link rel="stylesheet" href="/assets/css/docs.css">
+ <link rel="stylesheet" href="/assets/css/pygments.css">
+
+ <link rel="canonical"
href="http://kylin.apache.org/blog/2021/06/17/Why-did-Youzan-choose-Kylin4/">
+ <link rel="alternate" type="application/rss+xml" title="Apache Kylin"
href="http://kylin.apache.org/feed.xml" />
+
+<!--[if lt IE 9]> <script src="assets/js/html5shiv.js"></script> <![endif]-->
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async
src="https://www.googletagmanager.com/gtag/js?id=UA-120788561-1"></script>
+<script>
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+
+ gtag('config', 'UA-120788561-1');
+</script>
+<script type="text/javascript" src="/assets/js/jquery-1.9.1.min.js"></script>
+<script type="text/javascript" src="/assets/js/nside.js"></script> </script>
+<script type="text/javascript" src="/assets/js/nnav.js"></script> </script>
+<script>
+var _hmt = _hmt || [];
+(function() {
+ var hm = document.createElement("script");
+ hm.src = "https://hm.baidu.com/hm.js?bdc5e03add430c0b72cc0eb91eabfa99";
+ var s = document.getElementsByTagName("script")[0];
+ s.parentNode.insertBefore(hm, s);
+})();
+</script>
+
+</head>
+
+ <body>
+ <!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+-->
+
+<header id="header" >
+
+ <!-- Main Menu -->
+ <nav class="navbar navbar-default" role="navigation" id="nav-wrapper">
+ <div class="container-fluid" id="nav">
+ <!--
+ <img class="img-circle" width="40px" height="40px" id="circlelogo"
src="/assets/images/kylin_logo.jpg">
+ -->
+ <!-- Brand and toggle get grouped for better mobile display -->
+ <div class="navbar-header">
+ <img class="navbar-logo" width="46"
src="/assets/images/kylin_logo.png" ></img>
+ <button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <ul class="nav icon-navbar">
+ <li><a href="https://twitter.com/apachekylin" target="_blank"
class="fa fa-twitter fa-lg" title="Twitter: @ApacheKylin" ></a></li>
+ <li><a href="https://github.com/apache/kylin" target="_blank"
class="fa fa-github-alt fa-lg" title="Github: apache/kylin" ></a></li>
+ <li><a href="https://www.facebook.com/kylinio" target="_blank"
class="fa fa-facebook fa-lg" title="Facebook: kylin.io" ></a></li>
+ </ul>
+ </div>
+
+ <!-- Collect the nav links, forms, and other content for toggling -->
+ <div class="navbar-collapse collapse" id="bs-example-navbar-collapse-1">
+
+ <ul class="nav navbar-nav">
+
+ <li><a href="/">Home</a></li>
+ <li>
+ <a href="/docs">Docs</a>
+<!--
+ <a href="#" class="dropdown-toggle"
data-toggle="dropdown">Docs</a>
+ <ul class="dropdown-menu">
+
+ <li class="dropdown-submenu"><a href="#titleGetting Started"
data-toggle="collapse" class="navtitle">Getting Started</a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/index.html" class="list-group-item-lay
pjaxlink">Overview</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/release_notes.html" class="list-group-item-lay
pjaxlink">Release Notes</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/gettingstarted/concepts.html"
class="list-group-item-lay pjaxlink">Technical Concepts</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/gettingstarted/terminology.html"
class="list-group-item-lay pjaxlink">Terminology</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/gettingstarted/faq.html" class="list-group-item-lay
pjaxlink">FAQ</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/gettingstarted/events.html" class="list-group-item-lay
pjaxlink">Events and Conferences</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/gettingstarted/best_practices.html"
class="list-group-item-lay pjaxlink">Community Best Practices</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/gettingstarted/kylin-quickstart.html"
class="list-group-item-lay pjaxlink">Quick Start</a>
+ </li>
+
+
+
+
+
+
+
+
+ <ul>
+ </li>
+
+ <li class="dropdown-submenu"><a href="#titleInstallation"
data-toggle="collapse" class="navtitle">Installation</a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/install/index.html" class="list-group-item-lay
pjaxlink">Installation Guide</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/install/kylin_cluster.html" class="list-group-item-lay
pjaxlink">Deploy in Cluster Mode</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/install/configuration.html" class="list-group-item-lay
pjaxlink">Kylin Configuration</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/install/kylin_aws_emr.html" class="list-group-item-lay
pjaxlink">Install Kylin on AWS EMR</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/install/kylin_docker.html" class="list-group-item-lay
pjaxlink">Run Kylin with Docker</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/install/kylin_on_kubernetes.html"
class="list-group-item-lay pjaxlink">Deploy Kylin on Kubernetes</a>
+ </li>
+
+
+
+
+
+
+
+
+ <ul>
+ </li>
+
+ <li class="dropdown-submenu"><a href="#titleTutorial"
data-toggle="collapse" class="navtitle">Tutorial</a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/kylin_sample.html" class="list-group-item-lay
pjaxlink">Quick Start with Sample Cube</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/web.html" class="list-group-item-lay
pjaxlink">Web Interface</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/create_cube.html" class="list-group-item-lay
pjaxlink">Cube Wizard</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/cube_build_job.html"
class="list-group-item-lay pjaxlink">Cube Build and Job Monitoring</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/cube_migration.html"
class="list-group-item-lay pjaxlink">Cube Migration</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/sql_reference.html" class="list-group-item-lay
pjaxlink">SQL Reference</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/project_level_acl.html"
class="list-group-item-lay pjaxlink">Project And Table Level ACL</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/cube_spark.html" class="list-group-item-lay
pjaxlink">Build Cube with Spark</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/cube_flink.html" class="list-group-item-lay
pjaxlink">Build Cube with Flink</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/cube_streaming.html"
class="list-group-item-lay pjaxlink">Cubing from Kafka(Near RT Streaming)</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/realtime_olap.html" class="list-group-item-lay
pjaxlink">Real-time OLAP</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/cube_build_performance.html"
class="list-group-item-lay pjaxlink">Cube Build Tuning</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/kylin_client_tool.html"
class="list-group-item-lay pjaxlink">Kylin Python Client</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/setup_systemcube.html"
class="list-group-item-lay pjaxlink">Set Up System Cube</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/use_cube_planner.html"
class="list-group-item-lay pjaxlink">Use Cube Planner</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/use_dashboard.html" class="list-group-item-lay
pjaxlink">Use Dashboard</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/setup_jdbc_datasource.html"
class="list-group-item-lay pjaxlink">Setup JDBC Data Source</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/hybrid.html" class="list-group-item-lay
pjaxlink">Hybrid Model</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/mysql_metastore.html"
class="list-group-item-lay pjaxlink">Use MySQL as Metastore</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/lambda_mode_and_timezone_realtime_olap.html"
class="list-group-item-lay pjaxlink">Lambda mode and Timezone in Real-time
OLAP</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/query_pushdown.html"
class="list-group-item-lay pjaxlink">Enable Query Pushdown</a>
+ </li>
+
+
+
+
+
+
+
+
+ <ul>
+ </li>
+
+ <li class="dropdown-submenu"><a href="#titleIntegration"
data-toggle="collapse" class="navtitle">Integration</a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/odbc.html" class="list-group-item-lay
pjaxlink">Kylin ODBC Driver</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/jdbc.html" class="list-group-item-lay
pjaxlink">Kylin JDBC Driver</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/tableau.html" class="list-group-item-lay
pjaxlink">Tableau 8</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/tableau_91.html" class="list-group-item-lay
pjaxlink">Tableau 9</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/powerbi.html" class="list-group-item-lay
pjaxlink">MS Excel and Power BI</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/microstrategy.html" class="list-group-item-lay
pjaxlink">MicroStrategy</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/squirrel.html" class="list-group-item-lay
pjaxlink">SQuirreL</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/flink.html" class="list-group-item-lay
pjaxlink">Apache Flink</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/spark.html" class="list-group-item-lay
pjaxlink">Apache Spark</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/hue.html" class="list-group-item-lay
pjaxlink">Hue</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/Qlik.html" class="list-group-item-lay
pjaxlink">Qlik Sense</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/tutorial/superset.html" class="list-group-item-lay
pjaxlink">Superset</a>
+ </li>
+
+
+
+
+
+
+
+
+ <ul>
+ </li>
+
+ <li class="dropdown-submenu"><a href="#titleHow To"
data-toggle="collapse" class="navtitle">How To</a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_use_restapi.html"
class="list-group-item-lay pjaxlink">Use RESTful API</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_build_cube_with_restapi.html"
class="list-group-item-lay pjaxlink">Build Cube with API</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_optimize_cubes.html"
class="list-group-item-lay pjaxlink">Optimize Cube Design</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_backup_metadata.html"
class="list-group-item-lay pjaxlink">Backup Metadata</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_cleanup_storage.html"
class="list-group-item-lay pjaxlink">Cleanup Storage</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_upgrade.html" class="list-group-item-lay
pjaxlink">Upgrade From Old Versions</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_use_cli.html" class="list-group-item-lay
pjaxlink">Use Utility CLIs</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_ldap_and_sso.html"
class="list-group-item-lay pjaxlink">Secure with LDAP and SSO</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_use_beeline.html"
class="list-group-item-lay pjaxlink">Use Beeline for Hive</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_update_coprocessor.html"
class="list-group-item-lay pjaxlink">Update Coprocessor</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_install_ranger_kylin_plugin.html"
class="list-group-item-lay pjaxlink">Install Ranger Plugin</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_enable_zookeeper_acl.html"
class="list-group-item-lay pjaxlink">Enable Zookeeper ACL</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/howto_use_hive_mr_dict.html"
class="list-group-item-lay pjaxlink">Use Hive to build global dictionary</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/howto/sample_dataset.html" class="list-group-item-lay
pjaxlink">Sample Dataset</a>
+ </li>
+
+
+
+
+
+
+
+
+ <ul>
+ </li>
+
+ <li class="dropdown-submenu"><a href="#titleSecurity"
data-toggle="collapse" class="navtitle">Security</a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/docs/security.html" class="list-group-item-lay
pjaxlink">Security Issues</a>
+ </li>
+
+
+
+
+
+
+
+
+ <ul>
+ </li>
+
+ </ul> -->
+ </li>
+ <li><a href="/download">Download</a></li>
+ <li><a href="/community" >Community</a></li>
+ <li><a href="/development" >Development</a></li>
+ <li><a href="/blog">Blog</a></li>
+ <li><a href="/cn" >䏿ç</a></li>
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </div><!-- /.container-fluid -->
+ </nav>
+
+ <div id="head" class="parallax normal-header" >
+ <div class="text-center header-apache">
+ <a href="http://apache.org/foundation/contributing.html" title="Support
Apache" style="margin-left: 150px;">
+ <div>
+ <img src="https://www.apache.org/images/SupportApache-small.png" >
+ </div>
+ </a>
+ </div>
+ </div>
+
+ </header>
+
+ <div class="page-content main">
+ <header style=" padding:2em 0 0 ">
+ <div class="container" >
+ <div style=" padding:0 4em">
+ <div class="blog-icon">
+ <img width="30" src="/assets/images/icon_blog_w.png">
+ </div>
+ <h4 class="index-title" style="
float:left;"><span>Apache Kylin⢠Technical Blog</span></h4>
+ </div>
+ </div>
+ </div>
+
+ <div class="container blog">
+ <div>
+ <article class="post-content" >
+ <!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+-->
+
+<div class="post" style=" padding:2em 4em 4em 4em">
+
+ <header class="post-header">
+ <h1 class="post-title">Why did Youzan choose Kylin4</h1>
+ <p class="post-meta" >Jun 17, 2021 ⢠Zheng Shengjun</p>
+ </header>
+
+ <article class="post-content" >
+ <p>At the QCon Global Software Developers Conference held on May 29, 2021,
Zheng Shengjun, head of Youzanâs data infrastructure platform, shared
Youzanâs internal use experience and optimization practice of Kylin 4.0 on
the meeting room of open source big data frameworks and applications. <br />
+For many users of Kylin2/3(Kylin on HBase), this is also a chance to learn how
and why to upgrade to Kylin 4.</p>
+
+<p>This sharing is mainly divided into the following parts:</p>
+
+<ul>
+ <li>The reason for choosing Kylin 4</li>
+ <li>Introduction to Kylin 4</li>
+ <li>How to optimize performance of Kylin 4</li>
+ <li>Practice of Kylin 4 in Youzan</li>
+</ul>
+
+<h2 id="the-reason-for-choosing-kylin-4">01 The reason for choosing Kylin
4</h2>
+
+<h3 id="introduction-to-youzan">Introduction to Youzan</h3>
+<p>China Youzan Co., Ltd (stock code 08083.HK). is an enterprise mainly
engaged in retail technology services.<br />
+At present, it owns several tools and solutions to provide SaaS software
products and talent services to help merchants operate mobile social e-commerce
and new retail channels in an all-round way. <br />
+Currently Youzan has hundreds of millions of consumers and 6 million existing
merchants.</p>
+
+<h3 id="history-of-kylin-in-youzan">History of Kylin in Youzan</h3>
+<p><img src="/images/blog/youzan/1 history_of_youzan_OLAP.png" alt="" /></p>
+
+<p>First of all, I would like to share why Youzan chose to upgrade to Kylin 4.
Here, let me briefly reviewed the history of Youzan OLAP infra.</p>
+
+<p>In the early days of Youzan, in order to iterate develop process quickly,
we chose the method of pre-computation + MySQL; in 2018, Druid was introduced
because of query flexibility and development efficiency, but there were
problems such as low pre-aggregation, not supporting precisely count distinct
measure. In this situation, Youzan introduced Apache Kylin and ClickHouse.
Kylin supports high aggregation, precisely count distinct measure and the
lowest RT, while ClickHouse is quite flexible in usage(ad hoc query).</p>
+
+<p>From the introduction of Kylin in 2018 to now, Youzan has used Kylin for
more than three years. With the continuous enrichment of business scenarios and
the continuous accumulation of data volume, Youzan currently has 6 million
existing merchants, GMV in 2020 is 107.3 billion, and the daily build data
volume is 10 billion +. At present, Kylin has basically covered all the
business scenarios of Youzan.</p>
+
+<h3 id="the-challenges-of-kylin-3">The challenges of Kylin 3</h3>
+<p>With Youzanâs rapid development and in-depth use of Kylin, we also
encountered some challenges:</p>
+
+<ul>
+ <li>First of all, the build performance of Kylin on HBase cannot meet the
favorable expectations, and the build performance will affect the userâs
failure recovery time and stability experience;</li>
+ <li>Secondly, with the access of more large merchants (tens of millions of
members in a single store, with hundreds of thousands of goods for each store),
it also brings great challenges to our OLAP system. Kylin on HBase is limited
by the single-point query of Query Server, and cannot support these complex
scenarios well;</li>
+ <li>Finally, because HBase is not a cloud-native system, it is difficult to
achieve flexible scale up and scale down. With the continuous growth of data
volume, this system has peaks and valleys for businesses, which results in the
average resource utilization rate is not high enough.</li>
+</ul>
+
+<p>Faced with these challenges, Youzan chose to move closer and upgrade to the
more cloud-native Apache Kylin 4.</p>
+
+<h2 id="introduction-to-kylin-4">02 Introduction to Kylin 4</h2>
+<p>First of all, letâs introduce the main advantages of Kylin 4. Apache
Kylin 4 completely depends on Spark for cubing job and query. It can make full
use of Sparkâs parallelization, quantization(åéå), and global dynamic
code generation technologies to improve the efficiency of large queries.<br />
+Here is a brief introduction to the principle of Kylin 4, that is storage
engine, build engine and query engine.</p>
+
+<h3 id="storage-engine">Storage engine</h3>
+<p><img src="/images/blog/youzan/2 kylin4_storage.png" alt="" /></p>
+
+<p>First of all, letâs take a look at the new storage engine, comparison
between Kylin on HBase and Kylin on Parquet. The cuboid data of Kylin on HBase
is stored in the table of HBase. Single Segment corresponds to one HBase table.
Aggregation is pushed down to HBase coprocessor.</p>
+
+<p>But as we know, HBase is not a real Columnar Storage and its throughput is
not enough for OLAP System. Kylin 4 replaces HBase with Parquet, all the data
is stored in files. Each segment will have a corresponding HDFS directory. All
queries and cubing jobs read and write files without HBase . Although there
will be a certain loss of performance for simple queries, the improvement
brought about by complex queries is more considerable and worthwhile.</p>
+
+<h3 id="build-engine">Build engine</h3>
+<p><img src="/images/blog/youzan/3 kylin4_build_engine.png" alt="" /></p>
+
+<p>The second is the new build engine. Based on our test, the build speed of
Kylin on Parquet has been optimized from 82 minutes to 15 minutes. There are
several reasons:</p>
+
+<ul>
+ <li>Kylin 4 removes the encoding of the dimension, eliminating a building
step of encoding;</li>
+ <li>Removed the HBase File generation step;</li>
+ <li>Kylin on Parquet changes the granularity of cubing to cuboid level,
which is conducive to further improving parallelism of cubing job.</li>
+ <li>Enhanced implementation for global dictionary. In the new algorithm,
dictionary and source data are hashed into the same buckets, making it possible
for loading only piece of dictionary bucket to encode source data.</li>
+</ul>
+
+<p>As you can see on the right, after upgradation to Kylin 4, cubing job
changes from ten steps to two steps, the performance improvement of the
construction is very obvious.</p>
+
+<h3 id="query-engine">Query engine</h3>
+<p><img src="/images/blog/youzan/4 kylin4_query.png" alt="" /></p>
+
+<p>Next is the new query engine of Kylin 4. As you can see, the calculation of
Kylin on HBase is completely dependent on the coprocessor of HBase and query
server process. When the data is read from HBase into query server to do
aggregation, sorting, etc, the bottleneck will be restricted by the single
point of query server. But Kylin 4 is converted to a fully distributed query
mechanism based on Spark, whatâs more, it âs able to do configuration
tuning automatically in spark query step !</p>
+
+<h2 id="how-to-optimize-performance-of-kylin-4">03 How to optimize performance
of Kylin 4</h2>
+<p>Next, Iâd like to share some performance optimizations made by Youzan in
Kylin 4.</p>
+
+<h3 id="optimization-of-query-engine">Optimization of query engine</h3>
+<p>#### 1.Cache Calcite physical plan<br />
+<img src="/images/blog/youzan/5 cache_calcite_plan.png" alt="" /></p>
+
+<p>In Kylin4, SQL will be analyzed, optimized and do code generation in
calcite. This step takes up about 150ms for some queries. We have supported
PreparedStatementCache in Kylin4 to cache calcite plan, so that the structured
SQL donât have to do the same step again. With this optimization it saved
about 150ms of time cost.</p>
+
+<h4 id="tunning-spark-configuration">2.Tunning spark configuration</h4>
+<p><img src="/images/blog/youzan/6 tuning_spark_configuration.png" alt=""
/></p>
+
+<p>Kylin4 uses spark as query engine. As spark is a distributed engine
designed for massive data processing, itâs inevitable to loose some
performance for small queries. We have tried to do some tuning to catch up with
the latency in Kylin on HBase for small queries.</p>
+
+<p>Our first optimization is to make more calculations finish in memory. The
key is to avoid data spill during aggregation, shuffle and sort. Tuning the
following configuration is helpful.</p>
+
+<ul>
+ <li>1.set <code
class="highlighter-rouge">spark.sql.objectHashAggregate.sortBased.fallbackThreshold</code>
to larger value to avoid HashAggregate fall back to Sort Based Aggregate,
which really kills performance when happens.</li>
+ <li>2.set <code
class="highlighter-rouge">spark.shuffle.spill.initialMemoryThreshold</code> to
a large value to avoid to many spills during shuffle.</li>
+</ul>
+
+<p>Secondly, we route small queries to Query Server which run spark in local
mode. Because the overhead of task schedule, shuffle read and variable
broadcast is enlarged for small queries on YARN/Standalone mode.</p>
+
+<p>Thirdly, we use RAM disk to enhance shuffle performance. Mount RAM disk as
TMPFS and set spark.local.dir to directory using RAM disk.</p>
+
+<p>Lastly, we disabled sparkâs whole stage code generation for small
queries, for sparkâs whole stage code generation will cost about 100ms~200ms,
whereas itâs not beneficial to small queries which is a simple project.</p>
+
+<h4 id="parquet-optimization">3.Parquet optimization</h4>
+<p><img src="/images/blog/youzan/7 parquet_optimization.png" alt="" /></p>
+
+<p>Optimizing parquet is also important for queries.</p>
+
+<p>The first principal is that weâd better always include shard by column in
our filter condition, for parquet files are shard by shard-by-column, filter
using shard by column reduces the data files to read.</p>
+
+<p>Then look into parquet files, data within files are sorted by rowkey
columns, that is to say, prefix match in query is as important as Kylin on
HBase. When a query condition satisfies prefix match, it can filter row groups
with columnâs max/min index. Furthermore, we can reduce row group size to
make finer index granularity, but be aware that the compression rate will be
lower if we set row group size smaller.</p>
+
+<h4 id="dynamic-elimination-of-partitioning-dimensions">4.Dynamic elimination
of partitioning dimensions</h4>
+<p>Kylin4 have a new ability that the older version is not capable of, which
is able to reduce dozens of times of data reading and computing for some big
queries. Itâs offen the case that partition column is used to filter data but
not used as group dimension. For those cases Kylin would always choose cuboid
with partition column, but now it is able to use different cuboid in that query
to reduce IO read and computing.</p>
+
+<p>The key of this optimization is to split a query into two parts, one of the
part uses all segmentâs data so that partition column doesnât have to be
included in cuboid, the other part that uses part of segments data will choose
cuboid with partition dimension to do the data filter.</p>
+
+<p>We have tested that in some situations the response time reduced from 20s
to 6s, 10s to 3s.</p>
+
+<p><img src="/images/blog/youzan/8
Dynamic_elimination_of_partitioning_dimensions.png" alt="" /></p>
+
+<h3 id="optimization-of-build-engine">Optimization of build engine</h3>
+<p>#### 1.cache parent dataset<br />
+<img src="/images/blog/youzan/9 cache_parent_dataset.png" alt="" /></p>
+
+<p>Kylin build cube layer by layer. For a parent layer with multi cuboids to
build, we can choose to cache parent dataset by setting
kylin.engine.spark.parent-dataset.max.persist.count to a number greater than 0.
But notice that if you set this value too small, it will affect the parallelism
of build job, as the build granularity is at cuboid level.</p>
+
+<h2 id="practice-of-kylin-4-in-youzan">04 Practice of Kylin 4 in Youzan</h2>
+<p>After introducing Youzanâs experience of performance optimization,
letâs share the optimization effect. That is, Kylin 4âs practice in Youzan
includes the upgrade process and the performance of online system.</p>
+
+<h3 id="upgrade-metadata-to-adapt-to-kylin-4">Upgrade metadata to adapt to
Kylin 4</h3>
+<p>First of all, for metadata for Kylin 3 which stored on HBase, we have
developed a tool for seamless upgrading of metadata. First of all, our metadata
in Kylin on HBase is stored in HBase. We export the metadata in HBase into
local files, and then use tools to transform and write back the new metadata
into MySQL. We also updated the operation documents and general principles in
the official wiki of Apache Kylin. For more details, you can refer to: <a
href="https://wiki.apache.org/confluence/display/KYLIN/How+to+migrate+metadata+to+Kylin+4">How
to migrate metadata to Kylin 4</a>.</p>
+
+<p>Letâs give a general introduction to some compatibility in the whole
process. The project metadata, tables metadata, permission-related metadata,
and model metadata do not need be modified. What needs to be modified is the
cube metadata, including the type of storage and query used by Cube. After
updating these two fields, you need to recalculate the Cube signature. The
function of this signature is designed internally by Kylin to avoid some
problems caused by Cube after Cube is determined.</p>
+
+<h3 id="performance-of-kylin-4-on-youzan-online-system">Performance of Kylin 4
on Youzan online system</h3>
+<p><img src="/images/blog/youzan/10 commodity_insight.png" alt="" /></p>
+
+<p>After the migration of metadata to Kylin4, letâs share the qualitative
changes and substantial performance improvements brought about by some of the
promising scenarios. First of all, in a scenario like Commodity Insight, there
is a large store with several hundred thousand of commodities. We have to
analyze its transactions and traffic, etc. There are more than a dozen precise
precisely count distinct measures in single cube. Precisely count distinct
measure is actually very inefficient if it is not optimized through
pre-calculation and Bitmap. Kylin currently uses Bitmap to support precisely
count distinct measure. In a scene that requires complex queries to sort
hundreds of thousands of commodities in various UV(precisely count distinct
measure), the RT of Kylin 2 is 27 seconds, while the RT of Kylin 4 is reduced
from 27 seconds to less than 2 seconds.</p>
+
+<p>What I find most appealing to me about Kylin 4 is that itâs like a manual
transmission car, you can control its query concurrency at your will, whereas
you canât change query concurrency in Kylin on HBase freely, because its
concurrency is completely tied to the number of regions.</p>
+
+<h3 id="plan-for-kylin-4-in-youzan">Plan for Kylin 4 in Youzan</h3>
+<p>We have made full test, fixed several bugs and improved apache KYLIN4 for
several months. Now we are migrating cubes from older version to newer version.
For the cubes already migrated to KYLIN4, its small queriesâ performance meet
our expectations, its complex query and build performance did bring us a big
surprise. We are planning to migrate all cubes from older version to Kylin4.</p>
+
+ </article>
+
+</div>
+
+
+
+
+
+ </article>
+ </div>
+ </div>
+ <!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+-->
+
+<footer id="underfooter">
+ <div>
+ <div class="row">
+ <div class="col-md-12 widget">
+ <div class="widget-body">
+ <div class="footer-img">
+ <a href="http://www.apache.org">
+ <img id="asf-logo" height="78px" alt="Apache
Software Foundation" src="/assets/images/apache_footer.png">
+ </a>
+ </div>
+ <p style="padding-top: 11px;">
+ The contents of this website are © 2015 Apache
Software Foundation under the terms of the
+ <a href="http://www.apache.org/licenses/LICENSE-2.0">
Apache License v2 </a>.
+ </p>
+ <p style="margin-bottom: 11px;">
+ Apache Kylin and its logo are trademarks of the Apache
Software Foundation.
+ </div>
+
+ </div>
+ </div>
+ </div>
+ <!-- /row of widgets -->
+
+ </div>
+ <div></div>
+
+</footer>
+
+ <script src="/assets/js/jquery-1.9.1.min.js"></script>
+ <script src="/assets/js/bootstrap.min.js"></script>
+ <script src="/assets/js/main.js"></script>
+ </body>
+</html>
+
+
+
+
Modified: kylin/site/blog/index.html
URL:
http://svn.apache.org/viewvc/kylin/site/blog/index.html?rev=1890886&r1=1890885&r2=1890886&view=diff
==============================================================================
--- kylin/site/blog/index.html (original)
+++ kylin/site/blog/index.html Fri Jun 18 02:57:25 2021
@@ -8824,6 +8824,16 @@ var _hmt = _hmt || [];
<div class="col-md-6 col-lg-6 col-xs-12">
+ <a class="blog-card"
href="/blog/2021/06/17/Why-did-Youzan-choose-Kylin4/">
+ <div class="blog-pic">
+ <img width="20" src="../assets/images/icon_blog_w.png" />
+ </div>
+ <p class="blog-title">Why did Youzan choose Kylin4</p>
+ <p align="left" class="post-meta">posted: Jun 17, 2021</p>
+ </a>
+ </div>
+
+ <div class="col-md-6 col-lg-6 col-xs-12">
<a class="blog-card" href="/blog/2019/09/22/kylin-tableau/">
<div class="blog-pic">
<img width="20" src="../assets/images/icon_blog_w.png" />
Modified: kylin/site/cn/blog/index.html
URL:
http://svn.apache.org/viewvc/kylin/site/cn/blog/index.html?rev=1890886&r1=1890885&r2=1890886&view=diff
==============================================================================
--- kylin/site/cn/blog/index.html (original)
+++ kylin/site/cn/blog/index.html Fri Jun 18 02:57:25 2021
@@ -8826,6 +8826,16 @@ var _hmt = _hmt || [];
<div class="col-md-6 col-lg-6 col-xs-12">
+ <a class="blog-card"
href="/cn_blog/2021/06/17/Why-did-Youzan-choose-Kylin4/">
+ <div class="blog-pic">
+ <img width="20" src="/assets/images/icon_blog_w.png" />
+ </div>
+ <p class="blog-title">æèµä¸ºä»ä¹éæ© Kylin4</p>
+ <p align="left" class="post-meta">posted: Jun 17, 2021</p>
+ </a>
+ </div>
+
+ <div class="col-md-6 col-lg-6 col-xs-12">
<a class="blog-card"
href="/cn_blog/2019/11/29/Davinci-Kylin-Insight/">
<div class="blog-pic">
<img width="20" src="/assets/images/icon_blog_w.png" />