You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2017/02/20 05:26:18 UTC

[1/2] kylin git commit: added Flink and SQquirreL docs

Repository: kylin
Updated Branches:
  refs/heads/document c3417443e -> e3d43f725


added Flink and SQquirreL docs

Signed-off-by: shaofengshi <sh...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/159678cd
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/159678cd
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/159678cd

Branch: refs/heads/document
Commit: 159678cd10f7f42dd7869f1c5df3f78b9dcd094f
Parents: c341744
Author: albertoRamon <a....@gmail.com>
Authored: Sat Feb 18 12:21:55 2017 +0100
Committer: shaofengshi <sh...@apache.org>
Committed: Sun Feb 19 22:15:43 2017 +0800

----------------------------------------------------------------------
 website/_data/docs16.yml                |   2 +
 website/_docs16/index.md                |   2 +
 website/_docs16/tutorial/flink.md       | 277 +++++++++++++++++++++++++++
 website/_docs16/tutorial/squirrel.md    | 132 +++++++++++++
 website/images/Flink-Tutorial/00.png    | Bin 0 -> 1464 bytes
 website/images/Flink-Tutorial/01.png    | Bin 0 -> 4572 bytes
 website/images/Flink-Tutorial/02.png    | Bin 0 -> 4611 bytes
 website/images/Flink-Tutorial/03.png    | Bin 0 -> 4499 bytes
 website/images/Flink-Tutorial/03b.png   | Bin 0 -> 7954 bytes
 website/images/Flink-Tutorial/04.png    | Bin 0 -> 12933 bytes
 website/images/Flink-Tutorial/05.png    | Bin 0 -> 8127 bytes
 website/images/Flink-Tutorial/06.png    | Bin 0 -> 7748 bytes
 website/images/Flink-Tutorial/07.png    | Bin 0 -> 9189 bytes
 website/images/Flink-Tutorial/08.png    | Bin 0 -> 9774 bytes
 website/images/Flink-Tutorial/09.png    | Bin 0 -> 6800 bytes
 website/images/Flink-Tutorial/10.png    | Bin 0 -> 2241 bytes
 website/images/Flink-Tutorial/11.png    | Bin 0 -> 5916 bytes
 website/images/Flink-Tutorial/12.png    | Bin 0 -> 544 bytes
 website/images/Flink-Tutorial/13.png    | Bin 0 -> 4849 bytes
 website/images/Flink-Tutorial/14.png    | Bin 0 -> 1071 bytes
 website/images/Flink-Tutorial/15.png    | Bin 0 -> 610 bytes
 website/images/Flink-Tutorial/16.png    | Bin 0 -> 4800 bytes
 website/images/Flink-Tutorial/17.png    | Bin 0 -> 53995 bytes
 website/images/Flink-Tutorial/18.png    | Bin 0 -> 14276 bytes
 website/images/Flink-Tutorial/19.png    | Bin 0 -> 11980 bytes
 website/images/Flink-Tutorial/20.png    | Bin 0 -> 16603 bytes
 website/images/Flink-Tutorial/21.png    | Bin 0 -> 2132 bytes
 website/images/Flink-Tutorial/22.png    | Bin 0 -> 4917 bytes
 website/images/Flink-Tutorial/23.png    | Bin 0 -> 15461 bytes
 website/images/Flink-Tutorial/24.png    | Bin 0 -> 10660 bytes
 website/images/Flink-Tutorial/25.png    | Bin 0 -> 23750 bytes
 website/images/SQuirreL-Tutorial/00.png | Bin 0 -> 1464 bytes
 website/images/SQuirreL-Tutorial/01.png | Bin 0 -> 9774 bytes
 website/images/SQuirreL-Tutorial/02.png | Bin 0 -> 4572 bytes
 website/images/SQuirreL-Tutorial/03.png | Bin 0 -> 749 bytes
 website/images/SQuirreL-Tutorial/04.png | Bin 0 -> 237 bytes
 website/images/SQuirreL-Tutorial/05.png | Bin 0 -> 1050 bytes
 website/images/SQuirreL-Tutorial/06.png | Bin 0 -> 578 bytes
 website/images/SQuirreL-Tutorial/07.png | Bin 0 -> 1992 bytes
 website/images/SQuirreL-Tutorial/08.png | Bin 0 -> 1058 bytes
 website/images/SQuirreL-Tutorial/09.png | Bin 0 -> 2989 bytes
 website/images/SQuirreL-Tutorial/10.png | Bin 0 -> 2825 bytes
 website/images/SQuirreL-Tutorial/11.png | Bin 0 -> 656 bytes
 website/images/SQuirreL-Tutorial/12.png | Bin 0 -> 987 bytes
 website/images/SQuirreL-Tutorial/13.png | Bin 0 -> 237 bytes
 website/images/SQuirreL-Tutorial/14.png | Bin 0 -> 9177 bytes
 website/images/SQuirreL-Tutorial/15.png | Bin 0 -> 12174 bytes
 website/images/SQuirreL-Tutorial/16.png | Bin 0 -> 42855 bytes
 website/images/SQuirreL-Tutorial/17.png | Bin 0 -> 11729 bytes
 website/images/SQuirreL-Tutorial/18.png | Bin 0 -> 356 bytes
 website/images/SQuirreL-Tutorial/19.png | Bin 0 -> 15611 bytes
 website/images/SQuirreL-Tutorial/20.png | Bin 0 -> 4917 bytes
 website/images/SQuirreL-Tutorial/21.png | Bin 0 -> 3190 bytes
 website/images/SQuirreL-Tutorial/22.png | Bin 0 -> 8275 bytes
 website/images/SQuirreL-Tutorial/23.png | Bin 0 -> 8516 bytes
 website/images/SQuirreL-Tutorial/24.png | Bin 0 -> 10339 bytes
 website/images/SQuirreL-Tutorial/25.png | Bin 0 -> 11061 bytes
 57 files changed, 413 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/_data/docs16.yml
----------------------------------------------------------------------
diff --git a/website/_data/docs16.yml b/website/_data/docs16.yml
index 22f9141..3cb084e 100644
--- a/website/_data/docs16.yml
+++ b/website/_data/docs16.yml
@@ -45,6 +45,8 @@
   - tutorial/tableau_91
   - tutorial/powerbi
   - tutorial/odbc
+  - tutorial/flink
+  - tutorial/squirrel
 
 - title: How To
   docs:

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/_docs16/index.md
----------------------------------------------------------------------
diff --git a/website/_docs16/index.md b/website/_docs16/index.md
index 61056d8..b4eee3b 100644
--- a/website/_docs16/index.md
+++ b/website/_docs16/index.md
@@ -44,6 +44,8 @@ Connectivity and APIs
 6. [Connect from MS Excel and PowerBI](tutorial/powerbi.html)
 7. [Connect from Tableau 8](tutorial/tableau.html)
 8. [Connect from Tableau 9](tutorial/tableau_91.html)
+9. [Connect from SQuirreL](tutorial/squirrel.html)
+10. [Connect from Apache Flink](tutorial/flink.html)
 
 Operations
 ------------  

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/_docs16/tutorial/flink.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/flink.md b/website/_docs16/tutorial/flink.md
new file mode 100644
index 0000000..579bb08
--- /dev/null
+++ b/website/_docs16/tutorial/flink.md
@@ -0,0 +1,277 @@
+---
+layout: docs16
+title:  Apache Flink
+categories: tutorial
+permalink: /docs16/tutorial/flink.html
+---
+
+
+### Intro
+There are several Attempts to use this in Scala  and JDBC [Attempt1](http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/JDBCInputFormat-preparation-with-Flink-1-1-SNAPSHOT-and-Scala-2-11-td5371.html)  [Attempt2](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)  [Attempt3](http://stackoverflow.com/questions/36067881/create-dataset-from-jdbc-source-in-flink-using-scala)  [Attempt4](https://codegists.com/snippet/scala/jdbcissuescala_zeitgeist_scala)  but none works  ...
+
+**Problem 1:** There aren\u2019t any doc about connect  Kylin with  Flink
+
+**Problem 2:**  We will try use CreateInput and [JDBCInputFormat](https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/batch/index.html) in batch mode and access via JDBC to Kylin. But isn\u2019t implemented in Scala is only in Java [MailList](http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/jdbc-JDBCInputFormat-td9393.html)
+	
+
+Then , We will go step by step solving problems
+
+&nbsp;
+### Pre-requisites
+* We need an instance of Kylin, with a cube: [Quick Start with Sample Cube](http://kylin.apache.org/docs15/tutorial/kylin_sample.html), will be enough
+
+   You can check: 
+
+  ![](/images/Flink-Tutorial/01.png)
+
+
+* [Scala](http://www.scala-lang.org/) and [Apache Flink](http://flink.apache.org/) Installed
+
+* [IntelliJ](https://www.jetbrains.com/idea/) Installed and configured for Scala / Flink (See [Flink IDE setup guide](https://ci.apache.org/projects/flink/flink-docs-release-1.1/internals/ide_setup.html) )
+
+&nbsp;
+### Used Software:
+* [Apache Flink](http://flink.apache.org/downloads.html) v1.2-SNAPSHOT
+* [Apache Kylin](http://kylin.apache.org/download/) v1.5.2
+
+  (In Nov 2016, only works with 1.5.4 or more by dependences with Calcite, I Tested with v1.6.0)
+* [IntelliJ](https://www.jetbrains.com/idea/download/#section=linux)  v2016.2
+* [Scala](downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz)  v2.11
+
+&nbsp;
+### Starting point:
+This can be out initial skeleton: 
+
+{% highlight Groff markup %}
+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)
+{% endhighlight %}
+
+The first error is: ![alt text](/images/Flink-Tutorial/02.png)
+
+We add to Scala: 
+{% highlight Groff markup %}
+import org.apache.flink.api.java.io.jdbc.JDBCInputFormat
+{% endhighlight %}
+
+&nbsp;
+
+Next error is  ![alt text](/images/Flink-Tutorial/03.png)
+
+We can solve dependencies [(mvn repository: jdbc)](https://mvnrepository.com/artifact/org.apache.flink/flink-jdbc/1.1.2)
+
+Add this to your pom.xml:
+{% highlight Groff markup %}
+<dependency>
+   <groupId>org.apache.flink</groupId>
+   <artifactId>flink-jdbc</artifactId>
+   <version>${flink.version}</version>
+</dependency>
+{% endhighlight %}
+
+&nbsp;
+## Solve dependencies of row 
+Similar to previous point we need solve dependencies of Row Class [(mvn repository: Table) ](https://mvnrepository.com/artifact/org.apache.flink/flink-table_2.10/1.1.2):
+
+  ![](/images/Flink-Tutorial/03b.png)
+
+
+* In POM.XML
+{% highlight Groff markup %}
+<dependency>
+   <groupId>org.apache.flink</groupId>
+   <artifactId>flink-table_2.10</artifactId>
+   <version>${flink.version}</version>
+</dependency>
+{% endhighlight %}
+
+* In Scala: 
+{% highlight Groff markup %}
+import org.apache.flink.api.table.Row
+{% endhighlight %}
+
+&nbsp;
+## Solve RowTypeInfo property (and their new dependencies)
+This is the new error to solve
+
+  ![](/images/Flink-Tutorial/04.png)
+
+
+* If we check the code of [JDBCInputFormat.java](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), we can see [this new property](https://github.com/apache/flink/commit/09b428bd65819b946cf82ab1fdee305eb5a941f5#diff-9b49a5041d50d9f9fad3f8060b3d1310R69) (and mandatory) added on Apr 2016 by [FLINK-3750](https://issues.apache.org/jira/browse/FLINK-3750)  Manual [JDBCInputFormat](https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/api/java/io/jdbc/JDBCInputFormat.html) v1.2 in Java
+
+   Add the new Property: **setRowTypeInfo**
+   
+{% highlight Groff markup %}
+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()
+{% endhighlight %}
+
+* �How can configure this  property in Scala? In [Attempt4](https://codegists.com/snippet/scala/jdbcissuescala_zeitgeist_scala), there is an incorrect solution
+   
+   We can check the types using the intellisense: ![alt text](/images/Flink-Tutorial/05.png)
+   
+   Then we will need add more dependences :(
+   
+   Add to scala:
+{% highlight Groff markup %}
+		import org.apache.flink.api.table.typeutils.RowTypeInfo
+		import org.apache.flink.api.common.typeinfo.{BasicTypeInfo, TypeInformation}
+{% endhighlight %}
+
+   We need create a Array or Seq of TypeInformation[ ]
+
+  ![](/images/Flink-Tutorial/06.png)
+
+
+   My solution:
+   
+{% highlight Groff markup %}
+   var stringColum: TypeInformation[String] = createTypeInformation[String]
+   val DB_ROWTYPE = new RowTypeInfo(Seq(stringColum))
+{% endhighlight %}
+
+&nbsp;
+## Solve Class Not Found
+We need find the kylin-jdbc-x.x.x.jar and expose to flink
+
+  ![](/images/Flink-Tutorial/07.png)
+
+
+1. We need to find the JAR Class for the JDBC Connector 
+
+   From Kylin [Download](http://kylin.apache.org/download/) Choose **Binary** and the **correct version of Kylin and HBase**
+   
+   Download & Unpack: in ./lib: 
+   
+
+  ![](/images/Flink-Tutorial/08.png)
+
+
+
+2. Make this JAR accessible to Flink
+
+   If you execute like service you need put this JAR in you Java ClassPATH using your .bashrc 
+
+  ![](/images/Flink-Tutorial/09.png)
+
+
+  Check the actual value: ![alt text](/images/Flink-Tutorial/10.png)
+  
+  Check the permission for this file (Must be accessible for you):
+
+  ![](/images/Flink-Tutorial/11.png)
+
+ 
+
+  If you are executing from IDE, you need add your ClassPath manually:
+  
+  On IntelliJ: ![alt text](/images/Flink-Tutorial/12.png)  > ![alt text](/images/Flink-Tutorial/13.png) > ![alt text](/images/Flink-Tutorial/14.png) > ![alt text](/images/Flink-Tutorial/15.png)
+  
+  The result, will be similar to: ![alt text](/images/Flink-Tutorial/16.png)
+  
+&nbsp;
+## Solve Couldn\u2019t access resultSet
+
+  ![](/images/Flink-Tutorial/17.png)
+
+
+Is related with [Flink 4108](https://issues.apache.org/jira/browse/FLINK-4108)  [(MailList)](http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/jdbc-JDBCInputFormat-td9393.html#a9415) and Timo Walther [make a PR](https://github.com/apache/flink/pull/2619)
+
+If you are <= Flink 1.2 you will need apply this path and make clean install
+
+&nbsp;
+## Solve the casting
+
+  ![](/images/Flink-Tutorial/18.png)
+
+In the error msg you have the problem and solution \u2026. nice ;)  ��
+
+&nbsp;
+## The result
+The out must be similar to this, print the result of query by standard output:
+
+  ![](/images/Flink-Tutorial/19.png)
+
+
+&nbsp;
+## Now, more complex . . . 
+We can try with multi-colum and multi-type query:
+
+{% highlight Groff markup %}
+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
+{% endhighlight %}
+
+We will need changes in DB_ROWTYPE:
+
+  ![](/images/Flink-Tutorial/20.png)
+
+
+And import lib of Java, to work with Data type of Java  ![alt text](/images/Flink-Tutorial/21.png)
+
+The new Result will be:  ![alt text](/images/Flink-Tutorial/22.png)
+
+  ![](/images/Flink-Tutorial/23.png)
+
+
+
+
+&nbsp;
+## Error:  Reused Connection
+
+  ![](/images/Flink-Tutorial/24.png)
+
+Check if your HBase and Kylin is working
+Also you can use Kylin UI for it
+
+
+&nbsp;
+## Error:  java.lang.AbstractMethodError:  \u2026.Avatica Connection
+See [Kylin 1898](https://issues.apache.org/jira/browse/KYLIN-1898) 
+
+It is a problem with kylin-jdbc-1.x.x. JAR, you need use Calcite 1.8 or more \u2192 use Kylin 1.5.4 or more
+
+  ![](/images/Flink-Tutorial/25.png)
+
+
+
+&nbsp;
+## Error: can't expand macros compiled by previous versions of scala
+Is a problem with versions of scala, check in with  scala -version  your actual version and choose your correct POM
+
+Perhaps you will need a IntelliJ > File > Invalidates Cache > Invalidate and Restart
+
+I Aded POM for Scala 2.11
+
+
+&nbsp;
+## Final Words
+**Now we can read Kylin\u2019s data from Apache Flink, great News ��**
+
+[Full Code Example](https://github.com/albertoRamon/Flink/tree/master/ReadKylinFromFlink/flink-scala-project)
+
+We solved all integration problems, and tested with different types of data (Long, BigDecimal and Dates)
+
+Today  (12 Oct 2016) Flink 1.2-SnapShot, you need download, apply path, compile and make install \u2026. but in new releases will not necessary
+
+**Updated** The patch has been comited at 15 Oct, then, Will be part of Flink 1.2
+
+&nbsp;
+&nbsp;
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/_docs16/tutorial/squirrel.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/squirrel.md b/website/_docs16/tutorial/squirrel.md
new file mode 100644
index 0000000..3a731cd
--- /dev/null
+++ b/website/_docs16/tutorial/squirrel.md
@@ -0,0 +1,132 @@
+---
+layout: docs16
+title:  SQuirreL
+categories: tutorial
+permalink: /docs16/tutorial/squirrel.html
+---
+
+### Intro
+SquirreL SQL is a multi platform Universal SQL Client (GNU License)
+You can use it to access HBase + Phoenix and Hive
+
+&nbsp;
+### Used Software
+* [Kylin v1.5.2](http://kylin.apache.org/download/) & ODBC 1.5
+*  Update Dic 2016: Kylin 1.6.0 & ODBC 1.6 Works OK
+* [SquirreL SQL v3.7.1](http://www.squirrelsql.org/)
+
+&nbsp;
+## Pre-requisites
+* We need to find the JAR Class for the JDBC Connector
+
+  From Kylin Download, Choose Binary and the **correct version of Kylin and HBase**
+  
+	Download & Unpack:  in **./lib**: 
+
+  ![](/images/SQuirreL-Tutorial/01.png)
+
+
+* We need an instance of Kylin, with a cube: Quick Start with Sample Cube, will be enough
+
+  You can check: 
+
+  ![](/images/SQuirreL-Tutorial/02.png)
+
+
+* [Dowload and install SquirreL](http://www.squirrelsql.org/#installation), you will need Java
+
+&nbsp;
+## Add Kylin Driver
+On left menu: ![alt text](/images/SQuirreL-Tutorial/03.png) >![alt text](/images/SQuirreL-Tutorial/04.png)  > ![alt text](/images/SQuirreL-Tutorial/05.png)  > ![alt text](/images/SQuirreL-Tutorial/06.png)
+
+And locale your JAR: ![alt text](/images/SQuirreL-Tutorial/07.png)
+
+Configure this parameters:
+
+* Put a name: ![alt text](/images/SQuirreL-Tutorial/08.png)
+* Example URL ![alt text](/images/SQuirreL-Tutorial/09.png)
+
+  jdbc:kylin://172.17.0.2:7070/learn_kylin
+* Put Class Name: ![alt text](/images/SQuirreL-Tutorial/10.png)
+	TIP:  If auto complete not work, type you:  org.apache.kylin.jdbc.Driver 
+	
+Check in your Driver List: ![alt text](/images/SQuirreL-Tutorial/11.png)
+
+&nbsp;
+## Add Aliases
+On left menu: ![alt text](/images/SQuirreL-Tutorial/12.png)  > ![alt text](/images/SQuirreL-Tutorial/13.png) : (Login pass by default: ADMIN / KYLIN)
+
+  ![](/images/SQuirreL-Tutorial/14.png)
+
+
+And automatically launch conection:
+
+  ![](/images/SQuirreL-Tutorial/15.png)
+
+
+&nbsp;
+## Connect and Execute
+The startup window when you are connect:
+
+  ![](/images/SQuirreL-Tutorial/16.png)
+
+
+
+Choose Tab:   and write your querie  (whe use Kylin\u2019s example cube):
+
+  ![](/images/SQuirreL-Tutorial/17.png)
+
+
+```
+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
+```
+
+Execute With: ![alt text](/images/SQuirreL-Tutorial/18.png) 
+
+  ![](/images/SQuirreL-Tutorial/19.png)
+
+
+And it\u2019s works,OK ![alt text](/images/SQuirreL-Tutorial/20.png) 
+
+&nbsp;
+## Extra: Some tips:
+SquirreL isn\u2019t the most stable SQL Client, but its very flexible and get you a lot of info
+
+I use it for PoC and try to solve / check connectivity problems
+
+List of  Tables: 
+
+  ![](/images/SQuirreL-Tutorial/21.png)
+
+
+&nbsp;
+
+List of Columns of table:
+
+  ![](/images/SQuirreL-Tutorial/22.png)
+
+
+&nbsp;
+
+List of column of Querie:
+
+  ![](/images/SQuirreL-Tutorial/23.png)
+
+
+&nbsp;
+
+Export the result of queries:
+
+  ![](/images/SQuirreL-Tutorial/24.png)
+
+
+&nbsp;
+
+ Info about time query execution:
+
+  ![](/images/SQuirreL-Tutorial/25.png)
+
+
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/00.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/00.png b/website/images/Flink-Tutorial/00.png
new file mode 100755
index 0000000..4fad8d1
Binary files /dev/null and b/website/images/Flink-Tutorial/00.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/01.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/01.png b/website/images/Flink-Tutorial/01.png
new file mode 100755
index 0000000..4503863
Binary files /dev/null and b/website/images/Flink-Tutorial/01.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/02.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/02.png b/website/images/Flink-Tutorial/02.png
new file mode 100755
index 0000000..29660d2
Binary files /dev/null and b/website/images/Flink-Tutorial/02.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/03.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/03.png b/website/images/Flink-Tutorial/03.png
new file mode 100755
index 0000000..d36e5b3
Binary files /dev/null and b/website/images/Flink-Tutorial/03.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/03b.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/03b.png b/website/images/Flink-Tutorial/03b.png
new file mode 100755
index 0000000..8774894
Binary files /dev/null and b/website/images/Flink-Tutorial/03b.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/04.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/04.png b/website/images/Flink-Tutorial/04.png
new file mode 100755
index 0000000..466ccdc
Binary files /dev/null and b/website/images/Flink-Tutorial/04.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/05.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/05.png b/website/images/Flink-Tutorial/05.png
new file mode 100755
index 0000000..982c0c0
Binary files /dev/null and b/website/images/Flink-Tutorial/05.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/06.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/06.png b/website/images/Flink-Tutorial/06.png
new file mode 100755
index 0000000..8fa7d84
Binary files /dev/null and b/website/images/Flink-Tutorial/06.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/07.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/07.png b/website/images/Flink-Tutorial/07.png
new file mode 100755
index 0000000..38e023f
Binary files /dev/null and b/website/images/Flink-Tutorial/07.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/08.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/08.png b/website/images/Flink-Tutorial/08.png
new file mode 100755
index 0000000..4ae5945
Binary files /dev/null and b/website/images/Flink-Tutorial/08.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/09.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/09.png b/website/images/Flink-Tutorial/09.png
new file mode 100755
index 0000000..b61ff37
Binary files /dev/null and b/website/images/Flink-Tutorial/09.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/10.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/10.png b/website/images/Flink-Tutorial/10.png
new file mode 100755
index 0000000..66c6895
Binary files /dev/null and b/website/images/Flink-Tutorial/10.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/11.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/11.png b/website/images/Flink-Tutorial/11.png
new file mode 100755
index 0000000..c5b92d5
Binary files /dev/null and b/website/images/Flink-Tutorial/11.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/12.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/12.png b/website/images/Flink-Tutorial/12.png
new file mode 100755
index 0000000..f4a33c7
Binary files /dev/null and b/website/images/Flink-Tutorial/12.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/13.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/13.png b/website/images/Flink-Tutorial/13.png
new file mode 100755
index 0000000..48ee1b8
Binary files /dev/null and b/website/images/Flink-Tutorial/13.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/14.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/14.png b/website/images/Flink-Tutorial/14.png
new file mode 100755
index 0000000..9e73af8
Binary files /dev/null and b/website/images/Flink-Tutorial/14.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/15.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/15.png b/website/images/Flink-Tutorial/15.png
new file mode 100755
index 0000000..25bd6a1
Binary files /dev/null and b/website/images/Flink-Tutorial/15.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/16.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/16.png b/website/images/Flink-Tutorial/16.png
new file mode 100755
index 0000000..c7c9b1d
Binary files /dev/null and b/website/images/Flink-Tutorial/16.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/17.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/17.png b/website/images/Flink-Tutorial/17.png
new file mode 100755
index 0000000..34e6bdf
Binary files /dev/null and b/website/images/Flink-Tutorial/17.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/18.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/18.png b/website/images/Flink-Tutorial/18.png
new file mode 100755
index 0000000..dab912e
Binary files /dev/null and b/website/images/Flink-Tutorial/18.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/19.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/19.png b/website/images/Flink-Tutorial/19.png
new file mode 100755
index 0000000..639bae7
Binary files /dev/null and b/website/images/Flink-Tutorial/19.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/20.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/20.png b/website/images/Flink-Tutorial/20.png
new file mode 100755
index 0000000..78eb528
Binary files /dev/null and b/website/images/Flink-Tutorial/20.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/21.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/21.png b/website/images/Flink-Tutorial/21.png
new file mode 100755
index 0000000..f617884
Binary files /dev/null and b/website/images/Flink-Tutorial/21.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/22.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/22.png b/website/images/Flink-Tutorial/22.png
new file mode 100755
index 0000000..f566580
Binary files /dev/null and b/website/images/Flink-Tutorial/22.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/23.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/23.png b/website/images/Flink-Tutorial/23.png
new file mode 100755
index 0000000..5989426
Binary files /dev/null and b/website/images/Flink-Tutorial/23.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/24.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/24.png b/website/images/Flink-Tutorial/24.png
new file mode 100755
index 0000000..5805c65
Binary files /dev/null and b/website/images/Flink-Tutorial/24.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/Flink-Tutorial/25.png
----------------------------------------------------------------------
diff --git a/website/images/Flink-Tutorial/25.png b/website/images/Flink-Tutorial/25.png
new file mode 100644
index 0000000..7f78bd0
Binary files /dev/null and b/website/images/Flink-Tutorial/25.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/00.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/00.png b/website/images/SQuirreL-Tutorial/00.png
new file mode 100755
index 0000000..4fad8d1
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/00.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/01.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/01.png b/website/images/SQuirreL-Tutorial/01.png
new file mode 100755
index 0000000..4ae5945
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/01.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/02.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/02.png b/website/images/SQuirreL-Tutorial/02.png
new file mode 100755
index 0000000..4503863
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/02.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/03.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/03.png b/website/images/SQuirreL-Tutorial/03.png
new file mode 100755
index 0000000..6ad47c7
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/03.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/04.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/04.png b/website/images/SQuirreL-Tutorial/04.png
new file mode 100755
index 0000000..811fb5e
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/04.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/05.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/05.png b/website/images/SQuirreL-Tutorial/05.png
new file mode 100755
index 0000000..36beb36
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/05.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/06.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/06.png b/website/images/SQuirreL-Tutorial/06.png
new file mode 100755
index 0000000..580b577
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/06.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/07.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/07.png b/website/images/SQuirreL-Tutorial/07.png
new file mode 100755
index 0000000..9b7eb4a
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/07.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/08.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/08.png b/website/images/SQuirreL-Tutorial/08.png
new file mode 100755
index 0000000..e0800cf
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/08.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/09.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/09.png b/website/images/SQuirreL-Tutorial/09.png
new file mode 100755
index 0000000..4a3a79b
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/09.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/10.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/10.png b/website/images/SQuirreL-Tutorial/10.png
new file mode 100755
index 0000000..23936b2
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/10.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/11.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/11.png b/website/images/SQuirreL-Tutorial/11.png
new file mode 100755
index 0000000..f733bba
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/11.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/12.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/12.png b/website/images/SQuirreL-Tutorial/12.png
new file mode 100755
index 0000000..1c34691
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/12.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/13.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/13.png b/website/images/SQuirreL-Tutorial/13.png
new file mode 100755
index 0000000..811fb5e
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/13.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/14.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/14.png b/website/images/SQuirreL-Tutorial/14.png
new file mode 100755
index 0000000..598c48a
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/14.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/15.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/15.png b/website/images/SQuirreL-Tutorial/15.png
new file mode 100755
index 0000000..abbbb62
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/15.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/16.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/16.png b/website/images/SQuirreL-Tutorial/16.png
new file mode 100755
index 0000000..7bd297e
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/16.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/17.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/17.png b/website/images/SQuirreL-Tutorial/17.png
new file mode 100755
index 0000000..d8246bf
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/17.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/18.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/18.png b/website/images/SQuirreL-Tutorial/18.png
new file mode 100755
index 0000000..208738a
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/18.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/19.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/19.png b/website/images/SQuirreL-Tutorial/19.png
new file mode 100755
index 0000000..72a2e8c
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/19.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/20.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/20.png b/website/images/SQuirreL-Tutorial/20.png
new file mode 100755
index 0000000..f566580
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/20.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/21.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/21.png b/website/images/SQuirreL-Tutorial/21.png
new file mode 100755
index 0000000..7ee9152
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/21.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/22.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/22.png b/website/images/SQuirreL-Tutorial/22.png
new file mode 100755
index 0000000..f44837a
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/22.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/23.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/23.png b/website/images/SQuirreL-Tutorial/23.png
new file mode 100755
index 0000000..29f61a0
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/23.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/24.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/24.png b/website/images/SQuirreL-Tutorial/24.png
new file mode 100755
index 0000000..a87277d
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/24.png differ

http://git-wip-us.apache.org/repos/asf/kylin/blob/159678cd/website/images/SQuirreL-Tutorial/25.png
----------------------------------------------------------------------
diff --git a/website/images/SQuirreL-Tutorial/25.png b/website/images/SQuirreL-Tutorial/25.png
new file mode 100755
index 0000000..79c3400
Binary files /dev/null and b/website/images/SQuirreL-Tutorial/25.png differ


[2/2] kylin git commit: Document format review on flink.md and squirrel.md

Posted by sh...@apache.org.
Document format review on flink.md and squirrel.md


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/e3d43f72
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/e3d43f72
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/e3d43f72

Branch: refs/heads/document
Commit: e3d43f725e7c9e9e28290b44d4390e990916c58c
Parents: 159678c
Author: shaofengshi <sh...@apache.org>
Authored: Mon Feb 20 13:26:09 2017 +0800
Committer: shaofengshi <sh...@apache.org>
Committed: Mon Feb 20 13:26:09 2017 +0800

----------------------------------------------------------------------
 website/_docs16/tutorial/flink.md    | 146 ++++++++++++------------------
 website/_docs16/tutorial/squirrel.md |  66 +++++---------
 2 files changed, 82 insertions(+), 130 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/e3d43f72/website/_docs16/tutorial/flink.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/flink.md b/website/_docs16/tutorial/flink.md
index 579bb08..f3cb99f 100644
--- a/website/_docs16/tutorial/flink.md
+++ b/website/_docs16/tutorial/flink.md
@@ -1,45 +1,39 @@
 ---
 layout: docs16
-title:  Apache Flink
+title:  Connect from Apache Flink
 categories: tutorial
 permalink: /docs16/tutorial/flink.html
 ---
 
 
-### Intro
-There are several Attempts to use this in Scala  and JDBC [Attempt1](http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/JDBCInputFormat-preparation-with-Flink-1-1-SNAPSHOT-and-Scala-2-11-td5371.html)  [Attempt2](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)  [Attempt3](http://stackoverflow.com/questions/36067881/create-dataset-from-jdbc-source-in-flink-using-scala)  [Attempt4](https://codegists.com/snippet/scala/jdbcissuescala_zeitgeist_scala)  but none works  ...
+### Introduction
 
-**Problem 1:** There aren\u2019t any doc about connect  Kylin with  Flink
+This document describes how to use Kylin as a data source in Apache Flink; 
 
-**Problem 2:**  We will try use CreateInput and [JDBCInputFormat](https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/batch/index.html) in batch mode and access via JDBC to Kylin. But isn\u2019t implemented in Scala is only in Java [MailList](http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/jdbc-JDBCInputFormat-td9393.html)
-	
+There were several attempts to do this in Scala and JDBC, but none of them works: 
 
-Then , We will go step by step solving problems
+* [attempt1](http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/JDBCInputFormat-preparation-with-Flink-1-1-SNAPSHOT-and-Scala-2-11-td5371.html)  
+* [attempt2](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)  
+* [attempt3](http://stackoverflow.com/questions/36067881/create-dataset-from-jdbc-source-in-flink-using-scala)  
+* [attempt4](https://codegists.com/snippet/scala/jdbcissuescala_zeitgeist_scala); 
 
-&nbsp;
-### Pre-requisites
-* We need an instance of Kylin, with a cube: [Quick Start with Sample Cube](http://kylin.apache.org/docs15/tutorial/kylin_sample.html), will be enough
-
-   You can check: 
-
-  ![](/images/Flink-Tutorial/01.png)
+We will try use CreateInput and [JDBCInputFormat](https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/batch/index.html) in batch mode and access via JDBC to Kylin. But it isn\u2019t implemented in Scala, is only in Java [MailList](http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/jdbc-JDBCInputFormat-td9393.html). This doc will go step by step solving these problems.
 
+### Pre-requisites
 
+* Need an instance of Kylin, with a Cube; [Sample Cube](/docs16/tutorial/kylin_sample.html) will be good enough.
 * [Scala](http://www.scala-lang.org/) and [Apache Flink](http://flink.apache.org/) Installed
+* [IntelliJ](https://www.jetbrains.com/idea/) Installed and configured for Scala/Flink (see [Flink IDE setup guide](https://ci.apache.org/projects/flink/flink-docs-release-1.1/internals/ide_setup.html) )
 
-* [IntelliJ](https://www.jetbrains.com/idea/) Installed and configured for Scala / Flink (See [Flink IDE setup guide](https://ci.apache.org/projects/flink/flink-docs-release-1.1/internals/ide_setup.html) )
+### Used software:
 
-&nbsp;
-### Used Software:
 * [Apache Flink](http://flink.apache.org/downloads.html) v1.2-SNAPSHOT
-* [Apache Kylin](http://kylin.apache.org/download/) v1.5.2
-
-  (In Nov 2016, only works with 1.5.4 or more by dependences with Calcite, I Tested with v1.6.0)
+* [Apache Kylin](http://kylin.apache.org/download/) v1.5.2 (v1.6.0 also works)
 * [IntelliJ](https://www.jetbrains.com/idea/download/#section=linux)  v2016.2
 * [Scala](downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz)  v2.11
 
-&nbsp;
 ### Starting point:
+
 This can be out initial skeleton: 
 
 {% highlight Groff markup %}
@@ -57,18 +51,14 @@ val inputFormat = JDBCInputFormat.buildJDBCInputFormat()
 
 The first error is: ![alt text](/images/Flink-Tutorial/02.png)
 
-We add to Scala: 
+Add to Scala: 
 {% highlight Groff markup %}
 import org.apache.flink.api.java.io.jdbc.JDBCInputFormat
 {% endhighlight %}
 
-&nbsp;
-
 Next error is  ![alt text](/images/Flink-Tutorial/03.png)
 
-We can solve dependencies [(mvn repository: jdbc)](https://mvnrepository.com/artifact/org.apache.flink/flink-jdbc/1.1.2)
-
-Add this to your pom.xml:
+We can solve dependencies [(mvn repository: jdbc)](https://mvnrepository.com/artifact/org.apache.flink/flink-jdbc/1.1.2); Add this to your pom.xml:
 {% highlight Groff markup %}
 <dependency>
    <groupId>org.apache.flink</groupId>
@@ -77,14 +67,14 @@ Add this to your pom.xml:
 </dependency>
 {% endhighlight %}
 
-&nbsp;
 ## Solve dependencies of row 
+
 Similar to previous point we need solve dependencies of Row Class [(mvn repository: Table) ](https://mvnrepository.com/artifact/org.apache.flink/flink-table_2.10/1.1.2):
 
   ![](/images/Flink-Tutorial/03b.png)
 
 
-* In POM.XML
+* In pom.xml add:
 {% highlight Groff markup %}
 <dependency>
    <groupId>org.apache.flink</groupId>
@@ -98,14 +88,14 @@ Similar to previous point we need solve dependencies of Row Class [(mvn reposito
 import org.apache.flink.api.table.Row
 {% endhighlight %}
 
-&nbsp;
 ## Solve RowTypeInfo property (and their new dependencies)
-This is the new error to solve
+
+This is the new error to solve:
 
   ![](/images/Flink-Tutorial/04.png)
 
 
-* If we check the code of [JDBCInputFormat.java](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), we can see [this new property](https://github.com/apache/flink/commit/09b428bd65819b946cf82ab1fdee305eb5a941f5#diff-9b49a5041d50d9f9fad3f8060b3d1310R69) (and mandatory) added on Apr 2016 by [FLINK-3750](https://issues.apache.org/jira/browse/FLINK-3750)  Manual [JDBCInputFormat](https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/api/java/io/jdbc/JDBCInputFormat.html) v1.2 in Java
+* If check the code of [JDBCInputFormat.java](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), we can see [this new property](https://github.com/apache/flink/commit/09b428bd65819b946cf82ab1fdee305eb5a941f5#diff-9b49a5041d50d9f9fad3f8060b3d1310R69) (and mandatory) added on Apr 2016 by [FLINK-3750](https://issues.apache.org/jira/browse/FLINK-3750)  Manual [JDBCInputFormat](https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/api/java/io/jdbc/JDBCInputFormat.html) v1.2 in Java
 
    Add the new Property: **setRowTypeInfo**
    
@@ -120,51 +110,47 @@ val inputFormat = JDBCInputFormat.buildJDBCInputFormat()
   .finish()
 {% endhighlight %}
 
-* �How can configure this  property in Scala? In [Attempt4](https://codegists.com/snippet/scala/jdbcissuescala_zeitgeist_scala), there is an incorrect solution
+* How can configure this property in Scala? In [Attempt4](https://codegists.com/snippet/scala/jdbcissuescala_zeitgeist_scala), there is an incorrect solution
    
    We can check the types using the intellisense: ![alt text](/images/Flink-Tutorial/05.png)
    
-   Then we will need add more dependences :(
-   
-   Add to scala:
+   Then we will need add more dependences; Add to scala:
+
 {% highlight Groff markup %}
-		import org.apache.flink.api.table.typeutils.RowTypeInfo
-		import org.apache.flink.api.common.typeinfo.{BasicTypeInfo, TypeInformation}
+import org.apache.flink.api.table.typeutils.RowTypeInfo
+import org.apache.flink.api.common.typeinfo.{BasicTypeInfo, TypeInformation}
 {% endhighlight %}
 
-   We need create a Array or Seq of TypeInformation[ ]
+   Create a Array or Seq of TypeInformation[ ]
 
   ![](/images/Flink-Tutorial/06.png)
 
 
-   My solution:
+   Solution:
    
 {% highlight Groff markup %}
    var stringColum: TypeInformation[String] = createTypeInformation[String]
    val DB_ROWTYPE = new RowTypeInfo(Seq(stringColum))
 {% endhighlight %}
 
-&nbsp;
-## Solve Class Not Found
-We need find the kylin-jdbc-x.x.x.jar and expose to flink
+## Solve ClassNotFoundException
 
   ![](/images/Flink-Tutorial/07.png)
 
+Need find the kylin-jdbc-x.x.x.jar and then expose to Flink
 
-1. We need to find the JAR Class for the JDBC Connector 
+1. Find the Kylin JDBC jar
 
-   From Kylin [Download](http://kylin.apache.org/download/) Choose **Binary** and the **correct version of Kylin and HBase**
+   From Kylin [Download](http://kylin.apache.org/download/) choose **Binary** and the **correct version of Kylin and HBase**
    
    Download & Unpack: in ./lib: 
    
-
   ![](/images/Flink-Tutorial/08.png)
 
 
-
 2. Make this JAR accessible to Flink
 
-   If you execute like service you need put this JAR in you Java ClassPATH using your .bashrc 
+   If you execute like service you need put this JAR in you Java class path using your .bashrc 
 
   ![](/images/Flink-Tutorial/09.png)
 
@@ -176,40 +162,37 @@ We need find the kylin-jdbc-x.x.x.jar and expose to flink
   ![](/images/Flink-Tutorial/11.png)
 
  
-
-  If you are executing from IDE, you need add your ClassPath manually:
+  If you are executing from IDE, need add your class path manually:
   
   On IntelliJ: ![alt text](/images/Flink-Tutorial/12.png)  > ![alt text](/images/Flink-Tutorial/13.png) > ![alt text](/images/Flink-Tutorial/14.png) > ![alt text](/images/Flink-Tutorial/15.png)
   
   The result, will be similar to: ![alt text](/images/Flink-Tutorial/16.png)
   
-&nbsp;
-## Solve Couldn\u2019t access resultSet
+## Solve "Couldn\u2019t access resultSet" error
 
   ![](/images/Flink-Tutorial/17.png)
 
 
-Is related with [Flink 4108](https://issues.apache.org/jira/browse/FLINK-4108)  [(MailList)](http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/jdbc-JDBCInputFormat-td9393.html#a9415) and Timo Walther [make a PR](https://github.com/apache/flink/pull/2619)
+It is related with [Flink 4108](https://issues.apache.org/jira/browse/FLINK-4108)  [(MailList)](http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/jdbc-JDBCInputFormat-td9393.html#a9415) and Timo Walther [make a PR](https://github.com/apache/flink/pull/2619)
 
-If you are <= Flink 1.2 you will need apply this path and make clean install
+If you are running Flink <= 1.2 you will need apply this path and make clean install
 
-&nbsp;
-## Solve the casting
+## Solve the casting error
 
   ![](/images/Flink-Tutorial/18.png)
 
-In the error msg you have the problem and solution \u2026. nice ;)  ��
+In the error message you have the problem and solution \u2026. nice ;)  ��
 
-&nbsp;
 ## The result
-The out must be similar to this, print the result of query by standard output:
+
+The output must be similar to this, print the result of query by standard output:
 
   ![](/images/Flink-Tutorial/19.png)
 
 
-&nbsp;
-## Now, more complex . . . 
-We can try with multi-colum and multi-type query:
+## Now, more complex
+
+Try with a multi-colum and multi-type query:
 
 {% highlight Groff markup %}
 select part_dt, sum(price) as total_selled, count(distinct seller_id) as sellers 
@@ -218,60 +201,49 @@ group by part_dt
 order by part_dt
 {% endhighlight %}
 
-We will need changes in DB_ROWTYPE:
+Need changes in DB_ROWTYPE:
 
   ![](/images/Flink-Tutorial/20.png)
 
 
-And import lib of Java, to work with Data type of Java  ![alt text](/images/Flink-Tutorial/21.png)
+And import lib of Java, to work with Data type of Java ![alt text](/images/Flink-Tutorial/21.png)
 
-The new Result will be:  ![alt text](/images/Flink-Tutorial/22.png)
+The new result will be: 
 
   ![](/images/Flink-Tutorial/23.png)
 
 
-
-
-&nbsp;
 ## Error:  Reused Connection
 
+
   ![](/images/Flink-Tutorial/24.png)
 
-Check if your HBase and Kylin is working
-Also you can use Kylin UI for it
+Check if your HBase and Kylin is working. Also you can use Kylin UI for it.
 
 
-&nbsp;
 ## Error:  java.lang.AbstractMethodError:  \u2026.Avatica Connection
+
 See [Kylin 1898](https://issues.apache.org/jira/browse/KYLIN-1898) 
 
-It is a problem with kylin-jdbc-1.x.x. JAR, you need use Calcite 1.8 or more \u2192 use Kylin 1.5.4 or more
+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.
 
   ![](/images/Flink-Tutorial/25.png)
 
 
 
-&nbsp;
 ## Error: can't expand macros compiled by previous versions of scala
-Is a problem with versions of scala, check in with  scala -version  your actual version and choose your correct POM
 
-Perhaps you will need a IntelliJ > File > Invalidates Cache > Invalidate and Restart
+Is a problem with versions of scala, check in with "scala -version" your actual version and choose your correct POM.
 
-I Aded POM for Scala 2.11
+Perhaps you will need a IntelliJ > File > Invalidates Cache > Invalidate and Restart.
 
+I added POM for Scala 2.11
 
-&nbsp;
-## Final Words
-**Now we can read Kylin\u2019s data from Apache Flink, great News ��**
-
-[Full Code Example](https://github.com/albertoRamon/Flink/tree/master/ReadKylinFromFlink/flink-scala-project)
 
-We solved all integration problems, and tested with different types of data (Long, BigDecimal and Dates)
-
-Today  (12 Oct 2016) Flink 1.2-SnapShot, you need download, apply path, compile and make install \u2026. but in new releases will not necessary
+## Final Words
 
-**Updated** The patch has been comited at 15 Oct, then, Will be part of Flink 1.2
+Now you can read Kylin\u2019s data from Apache Flink, great!
 
-&nbsp;
-&nbsp;
+[Full Code Example](https://github.com/albertoRamon/Flink/tree/master/ReadKylinFromFlink/flink-scala-project)
 
+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.

http://git-wip-us.apache.org/repos/asf/kylin/blob/e3d43f72/website/_docs16/tutorial/squirrel.md
----------------------------------------------------------------------
diff --git a/website/_docs16/tutorial/squirrel.md b/website/_docs16/tutorial/squirrel.md
index 3a731cd..5e69780 100644
--- a/website/_docs16/tutorial/squirrel.md
+++ b/website/_docs16/tutorial/squirrel.md
@@ -1,45 +1,39 @@
 ---
 layout: docs16
-title:  SQuirreL
+title:  Connect from SQuirreL
 categories: tutorial
 permalink: /docs16/tutorial/squirrel.html
 ---
 
-### Intro
-SquirreL SQL is a multi platform Universal SQL Client (GNU License)
-You can use it to access HBase + Phoenix and Hive
+### Introduction
+
+[SQuirreL SQL](http://www.squirrelsql.org/) is a multi platform Universal SQL Client (GNU License). You can use it to access HBase + Phoenix and Hive. This document introduces how to connect to Kylin from SQuirreL.
 
-&nbsp;
 ### Used Software
-* [Kylin v1.5.2](http://kylin.apache.org/download/) & ODBC 1.5
-*  Update Dic 2016: Kylin 1.6.0 & ODBC 1.6 Works OK
+
+* [Kylin v1.6.0](/download/) & ODBC 1.6
 * [SquirreL SQL v3.7.1](http://www.squirrelsql.org/)
 
-&nbsp;
 ## Pre-requisites
-* We need to find the JAR Class for the JDBC Connector
 
+* Find the Kylin JDBC driver jar
   From Kylin Download, Choose Binary and the **correct version of Kylin and HBase**
-  
 	Download & Unpack:  in **./lib**: 
-
   ![](/images/SQuirreL-Tutorial/01.png)
 
 
-* We need an instance of Kylin, with a cube: Quick Start with Sample Cube, will be enough
-
-  You can check: 
+* Need an instance of Kylin, with a Cube; the [Sample Cube](/docs16/tutorial/kylin_sample.html) is enough.
 
   ![](/images/SQuirreL-Tutorial/02.png)
 
 
-* [Dowload and install SquirreL](http://www.squirrelsql.org/#installation), you will need Java
+* [Dowload and install SquirreL](http://www.squirrelsql.org/#installation)
+
+## Add Kylin JDBC Driver
 
-&nbsp;
-## Add Kylin Driver
 On left menu: ![alt text](/images/SQuirreL-Tutorial/03.png) >![alt text](/images/SQuirreL-Tutorial/04.png)  > ![alt text](/images/SQuirreL-Tutorial/05.png)  > ![alt text](/images/SQuirreL-Tutorial/06.png)
 
-And locale your JAR: ![alt text](/images/SQuirreL-Tutorial/07.png)
+And locate the JAR: ![alt text](/images/SQuirreL-Tutorial/07.png)
 
 Configure this parameters:
 
@@ -48,12 +42,12 @@ Configure this parameters:
 
   jdbc:kylin://172.17.0.2:7070/learn_kylin
 * Put Class Name: ![alt text](/images/SQuirreL-Tutorial/10.png)
-	TIP:  If auto complete not work, type you:  org.apache.kylin.jdbc.Driver 
+	Tip:  If auto complete not work, type:  org.apache.kylin.jdbc.Driver 
 	
-Check in your Driver List: ![alt text](/images/SQuirreL-Tutorial/11.png)
+Check the Driver List: ![alt text](/images/SQuirreL-Tutorial/11.png)
 
-&nbsp;
 ## Add Aliases
+
 On left menu: ![alt text](/images/SQuirreL-Tutorial/12.png)  > ![alt text](/images/SQuirreL-Tutorial/13.png) : (Login pass by default: ADMIN / KYLIN)
 
   ![](/images/SQuirreL-Tutorial/14.png)
@@ -64,15 +58,14 @@ And automatically launch conection:
   ![](/images/SQuirreL-Tutorial/15.png)
 
 
-&nbsp;
 ## Connect and Execute
-The startup window when you are connect:
 
-  ![](/images/SQuirreL-Tutorial/16.png)
+The startup window when connected:
 
+  ![](/images/SQuirreL-Tutorial/16.png)
 
 
-Choose Tab:   and write your querie  (whe use Kylin\u2019s example cube):
+Choose Tab: and write a query  (whe use Kylin\u2019s example cube):
 
   ![](/images/SQuirreL-Tutorial/17.png)
 
@@ -88,45 +81,32 @@ Execute With: ![alt text](/images/SQuirreL-Tutorial/18.png)
   ![](/images/SQuirreL-Tutorial/19.png)
 
 
-And it\u2019s works,OK ![alt text](/images/SQuirreL-Tutorial/20.png) 
+And it\u2019s works!
 
-&nbsp;
-## Extra: Some tips:
-SquirreL isn\u2019t the most stable SQL Client, but its very flexible and get you a lot of info
+## Tips:
 
-I use it for PoC and try to solve / check connectivity problems
+SquirreL isn\u2019t the most stable SQL Client, but it is very flexible and get a lot of info; It can be used for PoC and checking connectivity issues.
 
-List of  Tables: 
+List of tables: 
 
   ![](/images/SQuirreL-Tutorial/21.png)
 
 
-&nbsp;
-
-List of Columns of table:
+List of columns of table:
 
   ![](/images/SQuirreL-Tutorial/22.png)
 
 
-&nbsp;
-
 List of column of Querie:
 
   ![](/images/SQuirreL-Tutorial/23.png)
 
 
-&nbsp;
-
 Export the result of queries:
 
   ![](/images/SQuirreL-Tutorial/24.png)
 
 
-&nbsp;
-
  Info about time query execution:
 
   ![](/images/SQuirreL-Tutorial/25.png)
-
-
-