Author: lidong
Date: Tue Jul 6 07:50:56 2021
New Revision: 1891303
URL: http://svn.apache.org/viewvc?rev=1891303&view=rev
Log:
Add kylin4 blog
Added:
kylin/site/blog/2021/07/
kylin/site/blog/2021/07/02/
kylin/site/blog/2021/07/02/Apache-Kylin4-A-new-storage-and-compute-architecture/
kylin/site/blog/2021/07/02/Apache-Kylin4-A-new-storage-and-compute-architecture/index.html
kylin/site/cn/development40/
kylin/site/cn/development40/about_temp_files.html
kylin/site/cn/development40/coding_naming_convention.html
kylin/site/cn/development40/dev_env.html
kylin/site/cn/development40/doc_spec.html
kylin/site/cn/development40/howto_become_apache_committer.html
kylin/site/cn/development40/howto_contribute.html
kylin/site/cn/development40/howto_docs.html
kylin/site/cn/development40/howto_package.html
kylin/site/cn/development40/howto_release.html
kylin/site/cn/development40/howto_test.html
kylin/site/cn/development40/index.html
kylin/site/cn/development40/plugin_arch.html
kylin/site/cn/development40/web_tech.html
kylin/site/development40/
kylin/site/development40/about_temp_files.html
kylin/site/development40/coding_naming_convention.html
kylin/site/development40/dev_env.html
kylin/site/development40/doc_spec.html
kylin/site/development40/howto_become_apache_committer.html
kylin/site/development40/howto_contribute.html
kylin/site/development40/howto_docs.html
kylin/site/development40/howto_package.html
kylin/site/development40/howto_release.html
kylin/site/development40/howto_test.html
kylin/site/development40/index.html
kylin/site/development40/plugin_arch.html
kylin/site/development40/web_tech.html
kylin/site/images/blog/kylin4/
kylin/site/images/blog/kylin4/1 apache_kylin_introduction.png (with props)
kylin/site/images/blog/kylin4/10 spark_parquet_solution.png (with props)
kylin/site/images/blog/kylin4/11 spark_parquet_architecture.png (with
props)
kylin/site/images/blog/kylin4/2 cube_vs_cuboid.png (with props)
kylin/site/images/blog/kylin4/3 cuboid_selected_for_query.png (with props)
kylin/site/images/blog/kylin4/4 apache_kylin_query_process.png (with
props)
kylin/site/images/blog/kylin4/5 query_using_precomputed_data.png (with
props)
kylin/site/images/blog/kylin4/6 on-site-computation.png (with props)
kylin/site/images/blog/kylin4/7 precomputation_using_aggregated_data.png
(with props)
kylin/site/images/blog/kylin4/8 diagram_of_calcite_executions.png (with
props)
kylin/site/images/blog/kylin4/9 diagram_of_bottleneck_on_HBase.png (with
props)
kylin/site/images/develop40/
kylin/site/images/develop40/debug_tomcat_config.png (with props)
kylin/site/images/tutorial/4.0/overview/
kylin/site/images/tutorial/4.0/overview/build_duration_ssb.png (with
props)
kylin/site/images/tutorial/4.0/overview/query_response_ssb.png (with
props)
kylin/site/images/tutorial/4.0/overview/query_response_tpch.png (with
props)
kylin/site/images/tutorial/4.0/overview/result_size_ssb.png (with props)
kylin/site/website.iml
Modified:
kylin/site/blog/index.html
kylin/site/cn/development/about_temp_files.html
kylin/site/cn/development/coding_naming_convention.html
kylin/site/cn/development/datasource_sdk.html
kylin/site/cn/development/dev_env.html
kylin/site/cn/development/doc_spec.html
kylin/site/cn/development/howto_become_apache_committer.html
kylin/site/cn/development/howto_contribute.html
kylin/site/cn/development/howto_docs.html
kylin/site/cn/development/howto_package.html
kylin/site/cn/development/howto_release.html
kylin/site/cn/development/howto_test.html
kylin/site/cn/development/index.html
kylin/site/cn/development/new_metadata.html
kylin/site/cn/development/plugin_arch.html
kylin/site/cn/development/web_tech.html
kylin/site/cn/docs/install/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/development/about_temp_files.html
kylin/site/development/coding_naming_convention.html
kylin/site/development/datasource_sdk.html
kylin/site/development/dev_env.html
kylin/site/development/doc_spec.html
kylin/site/development/howto_become_apache_committer.html
kylin/site/development/howto_contribute.html
kylin/site/development/howto_docs.html
kylin/site/development/howto_package.html
kylin/site/development/howto_release.html
kylin/site/development/howto_test.html
kylin/site/development/index.html
kylin/site/development/new_metadata.html
kylin/site/development/plugin_arch.html
kylin/site/development/web_tech.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
Added:
kylin/site/blog/2021/07/02/Apache-Kylin4-A-new-storage-and-compute-architecture/index.html
URL:
http://svn.apache.org/viewvc/kylin/site/blog/2021/07/02/Apache-Kylin4-A-new-storage-and-compute-architecture/index.html?rev=1891303&view=auto
==============================================================================
---
kylin/site/blog/2021/07/02/Apache-Kylin4-A-new-storage-and-compute-architecture/index.html
(added)
+++
kylin/site/blog/2021/07/02/Apache-Kylin4-A-new-storage-and-compute-architecture/index.html
Tue Jul 6 07:50:56 2021
@@ -0,0 +1,8997 @@
+<!--
+* 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 | Apache Kylin4 â A new storage and compute
architecture</title>
+ <meta name="description" content="This article will discuss three aspects of
Apache Kylin: First, we will briefly introduce query principles of Apache
Kylin. Next, we will introduce Apache Pa...">
+ <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/07/02/Apache-Kylin4-A-new-storage-and-compute-architecture/">
+ <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">Apache Kylin4 â A new storage and compute
architecture</h1>
+ <p class="post-meta" >Jul 2, 2021 ⢠Jiatao Tao</p>
+ </header>
+
+ <article class="post-content" >
+ <p>This article will discuss three aspects of Apache Kylin: First, we will
briefly introduce query principles of Apache Kylin. Next, we will introduce
Apache Parquet Storage, a project our team has been involved in that Kyligence
is contributing back to the open source software community by the end of this
year (2020). Finally, we will introduce the extensive use of precision count
distinct by community users as well as its implementation in Kylin and some
extensions.</p>
+
+<h2 id="introduction-to-apache-kylin">01 Introduction to Apache Kylin</h2>
+<p>Apache Kylin is an open source distributed analysis engine that provides
SQL query interfaces above Hadoop/Spark and OLAP capabilities to support
extremely large data. It was initially developed at eBay Inc. and contributed
to the open source software community. It can query massive relational tables
with sub-second response times. <br />
+<img src="/images/blog/kylin4/1 apache_kylin_introduction.png" alt="" /></p>
+
+<p>As a SQL acceleration layer, Kylin can connect with various data sources
such as Hive and Kafka, and can connect with commonly used BI systems such as
Tableau and Power BI. It can also be queried directly (ad hoc) using standard
SQL tools.</p>
+
+<p>If you find yourself confronted by unhappy BI users for any of the
following reasons, you should consider using Apache Kylin: <br />
+- Their batch of queries are too slow <br />
+- Query or user concurrency should be higher <br />
+- Resources usage should be lower <br />
+- The system doesnât fully support SQL syntax <br />
+- The system doesnât seamlessly integrate with their favorite BI tools\</p>
+
+<h2 id="apache-kylin-rationale">02 Apache Kylin Rationale</h2>
+<p>Kylinâs core idea is the precomputation of result sets, meaning it
calculates all possible query results in advance according to the specified
dimensions and indicators and uses space for time to speed up OLAP queries with
fixed query patterns. <br />
+<img src="/images/blog/kylin4/2 cube_vs_cuboid.png" alt="" /></p>
+
+<p>Kylinâs design is based on cube theory. Each combination of dimensions is
called a cuboid and the set of all cuboids is a cube. The cuboid composed of
all dimensions is called the base cuboid, and the time, item, location, and
supplier shown in the figure is an example of this. All cuboids can be
calculated from the base cuboid. A cuboid can be understood as a wide table
after precomputation. During the query, Kylin will automatically select the
most suitable cuboid that meets the query requirements. <br />
+<img src="/images/blog/kylin4/3 cuboid_selected_for_query.png" alt="" /></p>
+
+<p>For example, the query in the above figure will look for the cuboid (time,
item, location). Compared with the calculation from the userâs original
table, the calculation from the cuboid can greatly reduce the amount of scanned
data and calculation.</p>
+
+<h2 id="apache-kylin-basic-query-process">03 Apache Kylin Basic Query
Process</h2>
+<p>Letâs look briefly at the rationale of Kylin queries. The first three
steps are the routine operations of all query engines. We use the Apache
Calcite framework to complete this operation. We will not go into great detail
here but, should you wish to learn more, there is plenty of related material
online. <br />
+<img src="/images/blog/kylin4/4 apache_kylin_query_process.png" alt="" /></p>
+
+<p>The introduction here focuses on the last two steps: Kylin adaptation and
query execution. Why do we need to do Kylin adaptation? Because the query plan
we obtained earlier is directly converted according to the userâs query, and
so this query plan cannot directly query the precomputed data. Here, a rewrite
is needed to create an execution plan so that it can query the precomputed data
(i.e. cube data). Letâs look at the following example: <br />
+<img src="/images/blog/kylin4/5 query_using_precomputed_data.png" alt="" /></p>
+
+<p>The user has a stock of goods. Item and user_id indicate which item has
been accessed and the user wants to analyze the Page View (PV) of the goods.
The user defines a cube where the dimension is item and the measure is COUNT
(user_id). If the user wants to analyze the PV of the goods, he will issue the
following SQL:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>SELECT item, COUNT
(user_id) FROM stock GROUP BY item;
+</code></pre>
+</div>
+
+<p>After this SQL is sent to Kylin, Kylin cannot directly use its original
semantics to query our cube data. This is because after the data is
precomputed, there will only be one row of data in the key of each item. The
rows of the same item key in the original table have been aggregated in
advance, generating a new measure column to store how many user_id accesses
each item key has, so the rewritten SQL will be similar to this:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code> SELECT item, SUM
(M_C) FROM stock GROUP BY item;
+</code></pre>
+</div>
+
+<p>Why is there another SUM/GROUP BY operation here instead of directly
fetching the data and returning it? Because the cuboid that may be hit by the
query is more than one dimension of item, meaning it is not the most accurate
cuboid. It needs to be aggregated again from these dimensions, but the amount
of partially aggregated data still significantly reduces the amount of data and
calculation compared with the data in the userâs original table. If the query
hits the cuboid accurately, we can directly skip the process of Agg/GROUP BY,
as it is shown in the following figure: <br />
+<img src="/images/blog/kylin4/6 on-site-computation.png" alt="" /></p>
+
+<p>The above figure is a scenario without precomputation, which requires
on-site calculation. Agg and Join will involve shuffle, so the performance will
be poor and more resources will be occupied with large amounts of data, which
will affect the concurrency of queries. <br />
+<img src="/images/blog/kylin4/7 on-site-computation.png" alt="" /></p>
+
+<p>After the precomputation, the previously most time-consuming two-step
operation (Agg/Join) disappeared from the rewritten execution plan, showing a
cuboid precise match. Additionally, when defining the cube we can choose to
order by column so the Sort operation does not need to be calculated. The whole
calculation is a single stage without the expense of a shuffle. The calculation
can be completed with only a few tasks therefore improving the concurrency of
the query.</p>
+
+<h2 id="apache-kylin-on-hbase">04 Apache Kylin on HBase</h2>
+<p>In the current open source version, the built data is stored in HBase,
weâve got a logical execution plan that can query cube data from the above
section. Calcite framework will generate the corresponding physical execution
plan according to this logical execution plan and, finally, each operator will
generate its own executable code through code generation. <br />
+<img src="/images/blog/kylin4/8 on-site-computation.png" alt="" /></p>
+
+<p>This process is an iterator model. Data flows from the lowest TableScan
operator to the upstream operator. The whole process is like a volcanic
eruption, so it is also called Volcano Iterator Mode. The code generated by
this TableScan will fetch cube data from HBase, and when the data is returned
to Kylin Query Server, it will be consumed layer by layer by the upper
operator.</p>
+
+<h2 id="bottlenecks-with-kylin-on-hbase">05 Bottlenecks with Kylin on
HBase</h2>
+<p>This scenario is not a big problem with simple SQL because, in the case of
a precise matching cuboid, minimal computing will be done on Kylin Query Server
after retrieving the data from HBase. However, for some more complex queries,
Kylin Query Server will not only pull back a large amount of data from HBase
but also compute very resource-intensive operations such as Joins and
Aggregates. <br />
+<img src="/images/blog/kylin4/9 diagram_of_bottleneck_on_HBase.png" alt=""
/><br />
+For example, a query joins two subqueries, each subquery hits its own cube and
then does some more complicated aggregate operations at the outermost layer
such as COUNT DISTINCT. When the amount of data becomes large, Kylin Query
Server may be out of memory (OOM). The solution is to simply increase the
memory of the Kylin Query Server.</p>
+
+<p>However, this is a vertical expansion process that becomes a bottleneck. We
know from experience that bottlenecks in big data can be difficult to diagnose
and can lead to the abandonment of a critical technology when selecting an
architecture. In addition, there are many other limitations when using this
system. For example, the operation and maintenance of HBase is notoriously
difficult. It is safe to assume that once the performance of HBase is not good,
the performance of Kylin will also suffer.</p>
+
+<p>The resource isolation capabilities of HBase are also relatively weak. When
there is a large load at a given moment, other applications using HBase will
also be affected. This may cause Kylin to have unstable query performance which
can be difficult to troubleshoot. All data stored in HBase are encoded Byte
Array types and the overhead of serialization and deserialization cannot be
ignored.</p>
+
+<h2 id="apache-kylin-with-spark--parquet">06 Apache Kylin with Spark +
Parquet</h2>
+<p>Due to the limitations of the Kylin-on-HBase solution mentioned above,
Kyligence has developed a new generation of Spark + Parquet-based solutions for
the commercial version of Kylin. This was done early on to update and enhance
the open source software solution for enterprise use.</p>
+
+<p>The following is an introduction to the overall framework of this new
system. <br />
+<img src="/images/blog/kylin4/10 spark_parquet_solution.png" alt="" /></p>
+
+<p>In fact, the new design is very simple. The visitor mode is used to
traverse the previously generated logical execution plan tree that can query
cube data. The nodes of the execution plan tree represent an operator, which
actually stores nothing more than some information such as which table to scan,
which columns to filter/project, etc. Each operator will be translated into a
Spark operation on Dataframe on the original tree, each upstream node asks its
downstream node for a DF up to the most downstream TableScan node after it has
finished processing. After it generates the initial DF, which can be simply
understood as cuboidDF = spark.read.parquet (path). After obtaining the initial
DF, it returns to its upstream. The upstream node applies its own operation on
the downstream DF and returns to its upstream. Finally, the top node collects
the DF to trigger the whole calculation process.</p>
+
+<h2 id="advantages-of-the-sparkparquet-architecture">07 Advantages of the
Spark/Parquet Architecture</h2>
+<p>This Kylin on Parquet plan relies on Spark. All calculations are
distributed and there is no single point where performance can bottleneck. The
computing power of the system can be improved through horizontal expansion
(scale-out). There are various schemes for resource scheduling such as Yarn,
K8S, or Mesos to meet the needs of enterprises for resource isolation.
Sparkâs performance efforts can be naturally enjoyed. The overhead of
serialization and deserialization of Kylin on HBase mentioned above can be
optimized by Sparkâs Tungsten project. <br />
+<img src="/images/blog/kylin4/11 spark_parquet_architecture.png" alt="" /></p>
+
+<p>Reducing the dependence upon HBase simplifies operation and maintenance.
All upstream and downstream dependencies can be handled by Spark for us,
reducing our dependence and facilitating cloud access.</p>
+
+<p>For developers, the DF generated by each operator can be collected directly
to observe whether there is any problem with the data at this level, and Spark
+ Parquet is currently a very popular SQL on Hadoop scheme. The open source
committers at Kyligence are also familiar with these two projects and maintain
their own Spark and Parquet branch. A lot of performance optimization and
stability improvements have been done in this area for our specific
scenarios.</p>
+
+<h2 id="summary">08 Summary</h2>
+<p>Apache Kylin has over 1,000 users worldwide. But, in order for the project
to ensure its future position as a vital, Cloud-Native technology for
enterprise analytics, the Kylin community must periodically evaluate and update
the key architectural assumptions being made to accomplish that goal. The
removal of legacy connections to the Hadoop ecosystem in favor of Spark and
Parquet is an important next step to realizing the dream of pervasive analytics
based on open source technology for organizations of all sizes around the
world.</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=1891303&r1=1891302&r2=1891303&view=diff
==============================================================================
--- kylin/site/blog/index.html (original)
+++ kylin/site/blog/index.html Tue Jul 6 07:50:56 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/07/02/Apache-Kylin4-A-new-storage-and-compute-architecture/">
+ <div class="blog-pic">
+ <img width="20" src="../assets/images/icon_blog_w.png" />
+ </div>
+ <p class="blog-title">Apache Kylin4 â A new storage and
compute architecture</p>
+ <p align="left" class="post-meta">posted: Jul 2, 2021</p>
+ </a>
+ </div>
+
+ <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" />
Modified: kylin/site/cn/development/about_temp_files.html
URL:
http://svn.apache.org/viewvc/kylin/site/cn/development/about_temp_files.html?rev=1891303&r1=1891302&r2=1891303&view=diff
==============================================================================
--- kylin/site/cn/development/about_temp_files.html (original)
+++ kylin/site/cn/development/about_temp_files.html Tue Jul 6 07:50:56 2021
@@ -276,10 +276,6 @@ var _hmt = _hmt || [];
-
-
-
-
<li class="navlist">
<a href="/cn/development/index.html" class="list-group-item-lay
pjaxlink">å¼åå¿«éæå</a></li>
@@ -384,10 +380,6 @@ var _hmt = _hmt || [];
-
-
-
-
<li class="navlist">
<a href="/cn/development/howto_test.html" class="list-group-item-lay
pjaxlink">å¦ä½æµè¯</a></li>
@@ -588,10 +580,6 @@ var _hmt = _hmt || [];
-
-
-
-
<li class="navlist">
<a href="/cn/development/howto_package.html"
class="list-group-item-lay pjaxlink">å¦ä½æäºè¿å¶å
</a></li>
@@ -640,9 +628,33 @@ var _hmt = _hmt || [];
- <li class="navlist">
- <a href="/cn/development/howto_hbase_branches.html"
class="list-group-item-lay pjaxlink">å¦ä½ç»´æ¤ HBase 忝</a></li>
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -692,10 +704,6 @@ var _hmt = _hmt || [];
-
-
-
-
<li class="navlist">
<a href="/cn/development/howto_release.html"
class="list-group-item-lay pjaxlink">å¦ä½åå¸</a></li>
@@ -764,10 +772,6 @@ var _hmt = _hmt || [];
-
-
-
-
<li class="navlist">
<a href="/cn/development/plugin_arch.html" class="list-group-item-lay
pjaxlink">æä»¶æ¶æ</a></li>
@@ -832,10 +836,6 @@ var _hmt = _hmt || [];
-
-
-
-
<li class="navlist">
<a href="/cn/development/new_metadata.html" class="list-group-item-lay
pjaxlink">æ°çå
æ°æ®æ¨¡å</a></li>
@@ -853,10 +853,6 @@ var _hmt = _hmt || [];
-
-
-
-