Added: kylin/site/docs23/tutorial/flink.html URL: http://svn.apache.org/viewvc/kylin/site/docs23/tutorial/flink.html?rev=1822508&view=auto ============================================================================== --- kylin/site/docs23/tutorial/flink.html (added) +++ kylin/site/docs23/tutorial/flink.html Mon Jan 29 14:05:18 2018 @@ -0,0 +1,4371 @@ +<!-- +* 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 Flink</title> + <meta name="description" content="Apache Kylin Home"> + <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/docs23/tutorial/flink.html"> + <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]--> +<script> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + //oringal tracker for kylin.io + ga('create', 'UA-55534813-1', 'auto'); + //new tracker for kylin.apache.org + ga('create', 'UA-55534813-2', 'auto', {'name':'toplevel'}); + + ga('send', 'pageview'); + ga('toplevel.send', 'pageview'); + + +</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> +</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" > + + <div id="head" class="parallax" parallax-speed="3" > + <div id="logo" class="text-center"> <img class="img-circle" id="circlelogo" src="/assets/images/kylin_logo.jpg"> <span class="title" >Apache Kylinâ¢</span> <span class="tagline">Extreme OLAP Engine for Big Data</span> + </div> + <div class="text-center" style=" + position: relative; + top: 66px; + width: 1080px; + margin: 0 auto; + z-index: 11; + margin-top: -253px; + text-align: right;" + > + <a href="http://apache.org/foundation/contributing.html" title="Support Apache" style="margin-left: 150px;"> + <img src="https://www.apache.org/images/SupportApache-small.png" style="height: 150px; width: 150px;"> + </a> + </div> + </div> + + + <!-- 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"> + <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> + + </div> + + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> + <ul class="nav navbar-nav"> + <li><a href="/">Home</a></li> + <li><a href="/docs21" >Docs</a></li> + <li><a href="/download">Download</li> + <li><a href="/community" >Community</a></li> + <li><a href="/development" >Development</a></li> + <li><a href="/blog">Blog</li> + <li><a href="/cn" >䏿ç</a></li> + <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><!-- /.navbar-collapse --> + </div><!-- /.container-fluid --> +</nav> + </header> + + + <div class="container"> + <div class="row"> + <!-- +* 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="col-md-3 col-lg-3 col-xs-4 aside1 visible-md visible-lg" id="nside1" style=" padding-top: 2em"> + <ul class="nav nav-pills nav-stacked"> + + <li><a href="#titleGetting Started" data-toggle="collapse" id="navtitle">Getting Started</a></li> + <div class="collapse in"> + <div class="list-group" id="list1"> + <ul style="list-style-type:disc"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/index.html" class="list-group-item-lay pjaxlink" id="navlist">Overview</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/release_notes.html" class="list-group-item-lay pjaxlink" id="navlist">Release Notes</a></li> + + + + + + + + + + + + + + + + + + <li><a href="/docs23/gettingstarted/concepts.html" class="list-group-item-lay pjaxlink" id="navlist">Technical Concepts</a></li> + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/gettingstarted/terminology.html" class="list-group-item-lay pjaxlink" id="navlist">Terminology</a></li> + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/gettingstarted/faq.html" class="list-group-item-lay pjaxlink" id="navlist">FAQ</a></li> + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/gettingstarted/events.html" class="list-group-item-lay pjaxlink" id="navlist">Events and Conferences</a></li> + + + + + + + + + + + + + + + + <li><a href="/docs23/gettingstarted/best_practices.html" class="list-group-item-lay pjaxlink" id="navlist">Community Best Practices</a></li> + + + + + + + + + <ul> + </div> +</div> + + <li><a href="#titleInstallation" data-toggle="collapse" id="navtitle">Installation</a></li> + <div class="collapse in"> + <div class="list-group" id="list1"> + <ul style="list-style-type:disc"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/install/index.html" class="list-group-item-lay pjaxlink" id="navlist">Installation Guide</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/install/hadoop_env.html" class="list-group-item-lay pjaxlink" id="navlist">Hadoop Environment</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/install/kylin_cluster.html" class="list-group-item-lay pjaxlink" id="navlist">Deploy in Cluster Mode</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/install/advance_settings.html" class="list-group-item-lay pjaxlink" id="navlist">Advanced Settings</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/install/kylin_docker.html" class="list-group-item-lay pjaxlink" id="navlist">Run Kylin with Docker</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/install/kylin_aws_emr.html" class="list-group-item-lay pjaxlink" id="navlist">Install Kylin on AWS EMR</a></li> + + + + + + + + + <ul> + </div> +</div> + + <li><a href="#titleTutorial" data-toggle="collapse" id="navtitle">Tutorial</a></li> + <div class="collapse in"> + <div class="list-group" id="list1"> + <ul style="list-style-type:disc"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/kylin_sample.html" class="list-group-item-lay pjaxlink" id="navlist">Quick Start with Sample Cube</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/web.html" class="list-group-item-lay pjaxlink" id="navlist">Web Interface</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/create_cube.html" class="list-group-item-lay pjaxlink" id="navlist">Cube Wizard</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/cube_build_job.html" class="list-group-item-lay pjaxlink" id="navlist">Cube Build and Job Monitoring</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/acl.html" class="list-group-item-lay pjaxlink" id="navlist">Cube Permission (v2.1.x)</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/project_level_acl.html" class="list-group-item-lay pjaxlink" id="navlist">Project Level ACL</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/cube_spark.html" class="list-group-item-lay pjaxlink" id="navlist">Build Cube with Spark</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/cube_build_performance.html" class="list-group-item-lay pjaxlink" id="navlist">Cube Build Tuning</a></li> + + + + + + + + + <ul> + </div> +</div> + + <li><a href="#titleIntegration" data-toggle="collapse" id="navtitle">Integration</a></li> + <div class="collapse in"> + <div class="list-group" id="list1"> + <ul style="list-style-type:disc"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/odbc.html" class="list-group-item-lay pjaxlink" id="navlist">Kylin ODBC Driver</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/tableau.html" class="list-group-item-lay pjaxlink" id="navlist">Tableau 8</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/tableau_91.html" class="list-group-item-lay pjaxlink" id="navlist">Tableau 9</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/powerbi.html" class="list-group-item-lay pjaxlink" id="navlist">MS Excel and Power BI</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/microstrategy.html" class="list-group-item-lay pjaxlink" id="navlist">MicroStrategy</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/squirrel.html" class="list-group-item-lay pjaxlink" id="navlist">SQuirreL</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/flink.html" class="list-group-item-lay pjaxlink" id="navlist">Apache Flink</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/hue.html" class="list-group-item-lay pjaxlink" id="navlist">Apache Hue</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/tutorial/Qlik.html" class="list-group-item-lay pjaxlink" id="navlist">Qlik Sense</a></li> + + + + + + + + + <ul> + </div> +</div> + + <li><a href="#titleHow To" data-toggle="collapse" id="navtitle">How To</a></li> + <div class="collapse in"> + <div class="list-group" id="list1"> + <ul style="list-style-type:disc"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_use_restapi.html" class="list-group-item-lay pjaxlink" id="navlist">Use RESTful API</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_build_cube_with_restapi.html" class="list-group-item-lay pjaxlink" id="navlist">Build Cube with API</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_optimize_cubes.html" class="list-group-item-lay pjaxlink" id="navlist">Optimize Cube Design</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_optimize_build.html" class="list-group-item-lay pjaxlink" id="navlist">Optimize Cube Build</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_backup_metadata.html" class="list-group-item-lay pjaxlink" id="navlist">Backup Metadata</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_cleanup_storage.html" class="list-group-item-lay pjaxlink" id="navlist">Cleanup Storage</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_jdbc.html" class="list-group-item-lay pjaxlink" id="navlist">Kylin JDBC Driver</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_upgrade.html" class="list-group-item-lay pjaxlink" id="navlist">Upgrade From Old Versions</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_ldap_and_sso.html" class="list-group-item-lay pjaxlink" id="navlist">Secure with LDAP and SSO</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_use_beeline.html" class="list-group-item-lay pjaxlink" id="navlist">Use Beeline for Hive</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_update_coprocessor.html" class="list-group-item-lay pjaxlink" id="navlist">Update Coprocessor</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_install_ranger_kylin_plugin.html" class="list-group-item-lay pjaxlink" id="navlist">The Ranger Kylin Plugin Installation Guide</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_enable_zookeeper_acl.html" class="list-group-item-lay pjaxlink" id="navlist">Enable zookeeper acl</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_setup_systemcube.html" class="list-group-item-lay pjaxlink" id="navlist">Set Up System Cube</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_use_cube_planner.html" class="list-group-item-lay pjaxlink" id="navlist">Use Cube Planner</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li><a href="/docs23/howto/howto_use_dashboard.html" class="list-group-item-lay pjaxlink" id="navlist">Use Dashboard</a></li> + + + + + + + + + <ul> + </div> +</div> + + + </ul> +</div> + + <div class="col-md-9 col-lg-9 col-xs-14 aside2"> + <div id="container"> + <div id="pjax"> + <h1 class="post-title">Apache Flink</h1> + + + <article class="post-content" > + <h3 id="introduction">Introduction</h3> + +<p>This document describes how to use Kylin as a data source in Apache Flink;</p> + +<p>There were several attempts to do this in Scala and JDBC, but none of them works:</p> + +<ul> + <li><a href="http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/JDBCInputFormat-preparation-with-Flink-1-1-SNAPSHOT-and-Scala-2-11-td5371.html">attempt1</a></li> + <li><a href="http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Type-of-TypeVariable-OT-in-class-org-apache-flink-api-common-io-RichInputFormat-could-not-be-determi-td7287.html">attempt2</a></li> + <li><a href="http://stackoverflow.com/questions/36067881/create-dataset-from-jdbc-source-in-flink-using-scala">attempt3</a></li> + <li><a href="https://codegists.com/snippet/scala/jdbcissuescala_zeitgeist_scala">attempt4</a>;</li> +</ul> + +<p>We will try use CreateInput and <a href="https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/batch/index.html">JDBCInputFormat</a> in batch mode and access via JDBC to Kylin. But it isnât implemented in Scala, is only in Java <a href="http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/jdbc-JDBCInputFormat-td9393.html">MailList</a>. This doc will go step by step solving these problems.</p> + +<h3 id="pre-requisites">Pre-requisites</h3> + +<ul> + <li>Need an instance of Kylin, with a Cube; <a href="kylin_sample.html">Sample Cube</a> will be good enough.</li> + <li><a href="http://www.scala-lang.org/">Scala</a> and <a href="http://flink.apache.org/">Apache Flink</a> Installed</li> + <li><a href="https://www.jetbrains.com/idea/">IntelliJ</a> Installed and configured for Scala/Flink (see <a href="https://ci.apache.org/projects/flink/flink-docs-release-1.1/internals/ide_setup.html">Flink IDE setup guide</a> )</li> +</ul> + +<h3 id="used-software">Used software:</h3> + +<ul> + <li><a href="http://flink.apache.org/downloads.html">Apache Flink</a> v1.2-SNAPSHOT</li> + <li><a href="http://kylin.apache.org/download/">Apache Kylin</a> v1.5.2 (v1.6.0 also works)</li> + <li><a href="https://www.jetbrains.com/idea/download/#section=linux">IntelliJ</a> v2016.2</li> + <li><a href="downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz">Scala</a> v2.11</li> +</ul> + +<h3 id="starting-point">Starting point:</h3> + +<p>This can be out initial skeleton:</p> + +<div class="highlight"><pre><code class="language-groff" data-lang="groff">import org.apache.flink.api.scala._ +val env = ExecutionEnvironment.getExecutionEnvironment +val inputFormat = JDBCInputFormat.buildJDBCInputFormat() + .setDrivername("org.apache.kylin.jdbc.Driver") + .setDBUrl("jdbc:kylin://172.17.0.2:7070/learn_kylin") + .setUsername("ADMIN") + .setPassword("KYLIN") + .setQuery("select count(distinct seller_id) as sellers from kylin_sales group by part_dt order by part_dt") + .finish() + val dataset =env.createInput(inputFormat)</code></pre></div> + +<p>The first error is: <img src="/images/Flink-Tutorial/02.png" alt="alt text" /></p> + +<p>Add to Scala:</p> + +<div class="highlight"><pre><code class="language-groff" data-lang="groff">import org.apache.flink.api.java.io.jdbc.JDBCInputFormat</code></pre></div> + +<p>Next error is <img src="/images/Flink-Tutorial/03.png" alt="alt text" /></p> + +<p>We can solve dependencies <a href="https://mvnrepository.com/artifact/org.apache.flink/flink-jdbc/1.1.2">(mvn repository: jdbc)</a>; Add this to your pom.xml:</p> + +<div class="highlight"><pre><code class="language-groff" data-lang="groff"><dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-jdbc</artifactId> + <version>${flink.version}</version> +</dependency></code></pre></div> + +<h2 id="solve-dependencies-of-row">Solve dependencies of row</h2> + +<p>Similar to previous point we need solve dependencies of Row Class <a href="https://mvnrepository.com/artifact/org.apache.flink/flink-table_2.10/1.1.2">(mvn repository: Table) </a>:</p> + +<p><img src="/images/Flink-Tutorial/03b.png" alt="" /></p> + +<ul> + <li>In pom.xml add:</li> +</ul> + +<div class="highlight"><pre><code class="language-groff" data-lang="groff"><dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table_2.10</artifactId> + <version>${flink.version}</version> +</dependency></code></pre></div> + +<ul> + <li>In Scala:</li> +</ul> + +<div class="highlight"><pre><code class="language-groff" data-lang="groff">import org.apache.flink.api.table.Row</code></pre></div> + +<h2 id="solve-rowtypeinfo-property-and-their-new-dependencies">Solve RowTypeInfo property (and their new dependencies)</h2> + +<p>This is the new error to solve:</p> + +<p><img src="/images/Flink-Tutorial/04.png" alt="" /></p> + +<ul> + <li> + <p>If check the code of <a href="https://github.com/apache/flink/blob/master/flink-batch-connectors/flink-jdbc/src/main/java/org/apache/flink/api/java/io/jdbc/JDBCInputFormat.java#L69">JDBCInputFormat.java</a>, we can see <a href="https://github.com/apache/flink/commit/09b428bd65819b946cf82ab1fdee305eb5a941f5#diff-9b49a5041d50d9f9fad3f8060b3d1310R69">this new property</a> (and mandatory) added on Apr 2016 by <a href="https://issues.apache.org/jira/browse/FLINK-3750">FLINK-3750</a> Manual <a href="https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/api/java/io/jdbc/JDBCInputFormat.html">JDBCInputFormat</a> v1.2 in Java</p> + + <p>Add the new Property: <strong>setRowTypeInfo</strong></p> + </li> +</ul> + +<div class="highlight"><pre><code class="language-groff" data-lang="groff">val inputFormat = JDBCInputFormat.buildJDBCInputFormat() + .setDrivername("org.apache.kylin.jdbc.Driver") + .setDBUrl("jdbc:kylin://172.17.0.2:7070/learn_kylin") + .setUsername("ADMIN") + .setPassword("KYLIN") + .setQuery("select count(distinct seller_id) as sellers from kylin_sales group by part_dt order by part_dt") + .setRowTypeInfo(DB_ROWTYPE) + .finish()</code></pre></div> + +<ul> + <li> + <p>How can configure this property in Scala? In <a href="https://codegists.com/snippet/scala/jdbcissuescala_zeitgeist_scala">Attempt4</a>, there is an incorrect solution</p> + + <p>We can check the types using the intellisense: <img src="/images/Flink-Tutorial/05.png" alt="alt text" /></p> + + <p>Then we will need add more dependences; Add to scala:</p> + </li> +</ul> + +<div class="highlight"><pre><code class="language-groff" data-lang="groff">import org.apache.flink.api.table.typeutils.RowTypeInfo +import org.apache.flink.api.common.typeinfo.{BasicTypeInfo, TypeInformation}</code></pre></div> + +<p>Create a Array or Seq of TypeInformation[ ]</p> + +<p><img src="/images/Flink-Tutorial/06.png" alt="" /></p> + +<p>Solution:</p> + +<div class="highlight"><pre><code class="language-groff" data-lang="groff">var stringColum: TypeInformation[String] = createTypeInformation[String] + val DB_ROWTYPE = new RowTypeInfo(Seq(stringColum))</code></pre></div> + +<h2 id="solve-classnotfoundexception">Solve ClassNotFoundException</h2> + +<p><img src="/images/Flink-Tutorial/07.png" alt="" /></p> + +<p>Need find the kylin-jdbc-x.x.x.jar and then expose to Flink</p> + +<ol> + <li> + <p>Find the Kylin JDBC jar</p> + + <p>From Kylin <a href="http://kylin.apache.org/download/">Download</a> choose <strong>Binary</strong> and the <strong>correct version of Kylin and HBase</strong></p> + + <p>Download & Unpack: in ./lib:</p> + </li> +</ol> + +<p><img src="/images/Flink-Tutorial/08.png" alt="" /></p> + +<ol> + <li> + <p>Make this JAR accessible to Flink</p> + + <p>If you execute like service you need put this JAR in you Java class path using your .bashrc</p> + </li> +</ol> + +<p><img src="/images/Flink-Tutorial/09.png" alt="" /></p> + +<p>Check the actual value: <img src="/images/Flink-Tutorial/10.png" alt="alt text" /></p> + +<p>Check the permission for this file (Must be accessible for you):</p> + +<p><img src="/images/Flink-Tutorial/11.png" alt="" /></p> + +<p>If you are executing from IDE, need add your class path manually:</p> + +<p>On IntelliJ: <img src="/images/Flink-Tutorial/12.png" alt="alt text" /> > <img src="/images/Flink-Tutorial/13.png" alt="alt text" /> > <img src="/images/Flink-Tutorial/14.png" alt="alt text" /> > <img src="/images/Flink-Tutorial/15.png" alt="alt text" /></p> + +<p>The result, will be similar to: <img src="/images/Flink-Tutorial/16.png" alt="alt text" /></p> + +<h2 id="solve-couldnt-access-resultset-error">Solve âCouldnât access resultSetâ error</h2> + +<p><img src="/images/Flink-Tutorial/17.png" alt="" /></p> + +<p>It is related with <a href="https://issues.apache.org/jira/browse/FLINK-4108">Flink 4108</a> <a href="http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/jdbc-JDBCInputFormat-td9393.html#a9415">(MailList)</a> and Timo Walther <a href="https://github.com/apache/flink/pull/2619">make a PR</a></p> + +<p>If you are running Flink <= 1.2 you will need apply this path and make clean install</p> + +<h2 id="solve-the-casting-error">Solve the casting error</h2> + +<p><img src="/images/Flink-Tutorial/18.png" alt="" /></p> + +<p>In the error message you have the problem and solution â¦. nice ;) ¡¡</p> + +<h2 id="the-result">The result</h2> + +<p>The output must be similar to this, print the result of query by standard output:</p> + +<p><img src="/images/Flink-Tutorial/19.png" alt="" /></p> + +<h2 id="now-more-complex">Now, more complex</h2> + +<p>Try with a multi-colum and multi-type query:</p> + +<div class="highlight"><pre><code class="language-groff" data-lang="groff">select part_dt, sum(price) as total_selled, count(distinct seller_id) as sellers +from kylin_sales +group by part_dt +order by part_dt</code></pre></div> + +<p>Need changes in DB_ROWTYPE:</p> + +<p><img src="/images/Flink-Tutorial/20.png" alt="" /></p> + +<p>And import lib of Java, to work with Data type of Java <img src="/images/Flink-Tutorial/21.png" alt="alt text" /></p> + +<p>The new result will be:</p> + +<p><img src="/images/Flink-Tutorial/23.png" alt="" /></p> + +<h2 id="error--reused-connection">Error: Reused Connection</h2> + +<p><img src="/images/Flink-Tutorial/24.png" alt="" /></p> + +<p>Check if your HBase and Kylin is working. Also you can use Kylin UI for it.</p> + +<h2 id="error--javalangabstractmethoderror--avatica-connection">Error: java.lang.AbstractMethodError: â¦.Avatica Connection</h2> + +<p>See <a href="https://issues.apache.org/jira/browse/KYLIN-1898">Kylin 1898</a></p> + +<p>It is a problem with kylin-jdbc-1.x.x. JAR, you need use Calcite 1.8 or above; The solution is to use Kylin 1.5.4 or above.</p> + +<p><img src="/images/Flink-Tutorial/25.png" alt="" /></p> + +<h2 id="error-cant-expand-macros-compiled-by-previous-versions-of-scala">Error: canât expand macros compiled by previous versions of scala</h2> + +<p>Is a problem with versions of scala, check in with âscala -versionâ your actual version and choose your correct POM.</p> + +<p>Perhaps you will need a IntelliJ > File > Invalidates Cache > Invalidate and Restart.</p> + +<p>I added POM for Scala 2.11</p> + +<h2 id="final-words">Final Words</h2> + +<p>Now you can read Kylinâs data from Apache Flink, great!</p> + +<p><a href="https://github.com/albertoRamon/Flink/tree/master/ReadKylinFromFlink/flink-scala-project">Full Code Example</a></p> + +<p>Solved all integration problems, and tested with different types of data (Long, BigDecimal and Dates). The patch has been comited at 15 Oct, then, will be part of Flink 1.2.</p> + + </article> + </div> + </div> + </div> + </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 class="container"> + <div class="row"> + <div class="col-md-12 widget"> + <div class="widget-body" style="text-align:center"> + <a href="http://www.apache.org"> + <img id="asf-logo" alt="Apache Software Foundation" src="/assets/images/feather-small.gif"> + </a> + + <div> + 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>. 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>