| <!-- |
| 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 lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> |
| |
| <title>Apache Flink 0.10-SNAPSHOT Documentation: IDE setup</title> |
| |
| <link rel="shortcut icon" href="http://flink.apache.org/docs/master/page/favicon.ico" type="image/x-icon"> |
| <link rel="icon" href="http://flink.apache.org/docs/master/page/favicon.ico" type="image/x-icon"> |
| |
| <!-- Bootstrap --> |
| <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> |
| <link rel="stylesheet" href="http://flink.apache.org/docs/master/page/css/flink.css"> |
| <link rel="stylesheet" href="http://flink.apache.org/docs/master/page/css/syntax.css"> |
| <link rel="stylesheet" href="http://flink.apache.org/docs/master/page/css/codetabs.css"> |
| |
| <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> |
| <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> |
| <!--[if lt IE 9]> |
| <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> |
| <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> |
| <![endif]--> |
| </head> |
| <body> |
| |
| |
| |
| |
| |
| |
| <!-- Top navbar. --> |
| <nav class="navbar navbar-default navbar-fixed-top"> |
| <div class="container"> |
| <!-- The logo. --> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <div class="navbar-logo"> |
| <a href="http://flink.apache.org"><img alt="Apache Flink" src="http://flink.apache.org/docs/master/page/img/navbar-brand-logo.jpg"></a> |
| </div> |
| </div><!-- /.navbar-header --> |
| |
| <!-- The navigation links. --> |
| <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> |
| <ul class="nav navbar-nav"> |
| <li><a href="http://flink.apache.org/docs/master/index.html">Overview<span class="hidden-sm hidden-xs"> 0.10</span></a></li> |
| |
| <!-- Setup --> |
| <li class="dropdown"> |
| <a href="http://flink.apache.org/docs/master/setup" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Setup <span class="caret"></span></a> |
| <ul class="dropdown-menu" role="menu"> |
| <li><a href="http://flink.apache.org/docs/master/setup/building.html">Get Flink 0.10-SNAPSHOT</a></li> |
| |
| <li class="divider"></li> |
| <li role="presentation" class="dropdown-header"><strong>Deployment</strong></li> |
| <li><a href="http://flink.apache.org/docs/master/setup/local_setup.html" class="active">Local</a></li> |
| <li><a href="http://flink.apache.org/docs/master/setup/cluster_setup.html">Cluster (Standalone)</a></li> |
| <li><a href="http://flink.apache.org/docs/master/setup/yarn_setup.html">YARN</a></li> |
| <li><a href="http://flink.apache.org/docs/master/setup/gce_setup.html">GCloud</a></li> |
| <li><a href="http://flink.apache.org/docs/master/setup/flink_on_tez.html">Flink on Tez <span class="badge">Beta</span></a></li> |
| |
| <li class="divider"></li> |
| <li><a href="http://flink.apache.org/docs/master/setup/config.html">Configuration</a></li> |
| </ul> |
| </li> |
| |
| <!-- Programming Guides --> |
| <li class="dropdown"> |
| <a href="http://flink.apache.org/docs/master/apis" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Programming Guides <span class="caret"></span></a> |
| <ul class="dropdown-menu" role="menu"> |
| <li><a href="http://flink.apache.org/docs/master/apis/programming_guide.html"><strong>Batch: DataSet API</strong></a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/streaming_guide.html"><strong>Streaming: DataStream API</strong> <span class="badge">Beta</span></a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/python.html">Python API <span class="badge">Beta</span></a></li> |
| |
| <li class="divider"></li> |
| <li><a href="scala_shell.html">Interactive Scala Shell</a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/dataset_transformations.html">Dataset Transformations</a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/best_practices.html">Best Practices</a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/example_connectors.html">Connectors</a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/examples.html">Examples</a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/local_execution.html">Local Execution</a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/cluster_execution.html">Cluster Execution</a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/cli.html">Command Line Interface</a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/web_client.html">Web Client</a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/iterations.html">Iterations</a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/java8.html">Java 8</a></li> |
| <li><a href="http://flink.apache.org/docs/master/apis/hadoop_compatibility.html">Hadoop Compatability <span class="badge">Beta</span></a></li> |
| </ul> |
| </li> |
| |
| <!-- Libraries --> |
| <li class="dropdown"> |
| <a href="http://flink.apache.org/docs/master/libs" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Libraries <span class="caret"></span></a> |
| <ul class="dropdown-menu" role="menu"> |
| <li><a href="http://flink.apache.org/docs/master/libs/spargel_guide.html">Graphs: Spargel</a></li> |
| <li><a href="http://flink.apache.org/docs/master/libs/gelly_guide.html">Graphs: Gelly <span class="badge">Beta</span></a></li> |
| <li><a href="http://flink.apache.org/docs/master/libs/ml/">Machine Learning <span class="badge">Beta</span></a></li> |
| <li><a href="http://flink.apache.org/docs/master/libs/table.html">Relational: Table <span class="badge">Beta</span></a></li> |
| </ul> |
| </li> |
| |
| <!-- Internals --> |
| <li class="dropdown"> |
| <a href="http://flink.apache.org/docs/master/internals" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Internals <span class="caret"></span></a> |
| <ul class="dropdown-menu" role="menu"> |
| <li role="presentation" class="dropdown-header"><strong>Contribute</strong></li> |
| <li><a href="http://flink.apache.org/docs/master/internals/how_to_contribute.html">How to Contribute</a></li> |
| <li><a href="http://flink.apache.org/docs/master/internals/coding_guidelines.html">Coding Guidelines</a></li> |
| <li><a href="http://flink.apache.org/docs/master/internals/ide_setup.html">IDE Setup</a></li> |
| <li><a href="http://flink.apache.org/docs/master/internals/logging.html">Logging</a></li> |
| <li class="divider"></li> |
| <li role="presentation" class="dropdown-header"><strong>Internals</strong></li> |
| <li><a href="http://flink.apache.org/docs/master/internals/general_arch.html">Architecture & Process Model</a></li> |
| <li><a href="http://flink.apache.org/docs/master/internals/types_serialization.html">Type Extraction & Serialization</a></li> |
| <li><a href="http://flink.apache.org/docs/master/internals/job_scheduling.html">Jobs & Scheduling</a></li> |
| <li><a href="http://flink.apache.org/docs/master/internals/add_operator.html">How-To: Add an Operator</a></li> |
| </ul> |
| </li> |
| </ul> |
| <form class="navbar-form navbar-right hidden-sm hidden-md" role="search" action="http://flink.apache.org/docs/master/search-results.html"> |
| <div class="form-group"> |
| <input type="text" class="form-control" name="q" placeholder="Search all pages"> |
| </div> |
| <button type="submit" class="btn btn-default">Search</button> |
| </form> |
| </div><!-- /.navbar-collapse --> |
| </div><!-- /.container --> |
| </nav> |
| |
| |
| |
| |
| <!-- Main content. --> |
| <div class="container"> |
| |
| |
| <div class="row"> |
| <div class="col-sm-10 col-sm-offset-1"> |
| <h1>IDE setup</h1> |
| |
| |
| |
| <ul id="markdown-toc"> |
| <li><a href="#eclipse" id="markdown-toc-eclipse">Eclipse</a> <ul> |
| <li><a href="#eclipse-scala-ide-303" id="markdown-toc-eclipse-scala-ide-303">Eclipse Scala IDE 3.0.3</a></li> |
| <li><a href="#eclipse-scala-ide-400" id="markdown-toc-eclipse-scala-ide-400">Eclipse Scala IDE 4.0.0</a></li> |
| </ul> |
| </li> |
| <li><a href="#intellij-idea" id="markdown-toc-intellij-idea">IntelliJ IDEA</a> <ul> |
| <li><a href="#installing-the-scala-plugin" id="markdown-toc-installing-the-scala-plugin">Installing the Scala plugin</a></li> |
| <li><a href="#installing-the-scala-compiler-plugin" id="markdown-toc-installing-the-scala-compiler-plugin">Installing the Scala compiler plugin</a></li> |
| <li><a href="#importing-flink" id="markdown-toc-importing-flink">Importing Flink</a></li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h2 id="eclipse">Eclipse</h2> |
| |
| <p>A brief guide how to set up Eclipse for development of the Flink core. |
| Flink uses mixed Scala/Java projects, which pose a challenge to some IDEs. |
| Below is the setup guide that works best from our personal experience.</p> |
| |
| <p>For Eclipse users, we currently recomment the Scala IDE 3.0.3, as the most robust solution.</p> |
| |
| <h3 id="eclipse-scala-ide-303">Eclipse Scala IDE 3.0.3</h3> |
| |
| <p><strong>NOTE:</strong> While this version of the Scala IDE is not the newest, we have found it to be the most reliably working |
| version for complex projects like Flink. One restriction is, though, that it works only with Java 7, not with Java 8.</p> |
| |
| <p><strong>Note:</strong> Before following this setup, make sure to run the build from the command line once |
| (<code>mvn clean package -DskipTests</code>)</p> |
| |
| <ol> |
| <li>Download the Scala IDE (preferred) or install the plugin to Eclipse Kepler. See section below for download links |
| and instructions.</li> |
| <li>Add the “macroparadise” compiler plugin to the Scala compiler. |
| Open “Window” -> “Preferences” -> “Scala” -> “Compiler” -> “Advanced” and put into the “Xplugin” field the path to |
| the <em>macroparadise</em> jar file (typically “/home/<em>-your-user-</em>/.m2/repository/org/scalamacros/paradise_2.10.4/2.0.1/paradise_2.10.4-2.0.1.jar”). |
| Note: If you do not have the jar file, you probably did not ran the command line build.</li> |
| <li>Import the Flink Maven projects (“File” -> “Import” -> “Maven” -> “Existing Maven Projects”)</li> |
| <li>During the import, Eclipse will ask to automatically install additional Maven build helper plugins.</li> |
| <li>Close the “flink-java8” project. Since Eclipse Kepler does not support Java 8, you cannot develop this project.</li> |
| </ol> |
| |
| <h4 id="download-links-for-scala-ide-303">Download links for Scala IDE 3.0.3</h4> |
| |
| <p>The Scala IDE 3.0.3 is a previous stable release, and download links are a bit hidden.</p> |
| |
| <p>The pre-packaged Scala IDE can be downloaded from the following links:</p> |
| |
| <ul> |
| <li><a href="http://downloads.typesafe.com/scalaide-pack/3.0.3.vfinal-210-20140327/scala-SDK-3.0.3-2.10-linux.gtk.x86_64.tar.gz">Linux (64 bit)</a></li> |
| <li><a href="http://downloads.typesafe.com/scalaide-pack/3.0.3.vfinal-210-20140327/scala-SDK-3.0.3-2.10-linux.gtk.x86.tar.gz">Linux (32 bit)</a></li> |
| <li><a href="http://downloads.typesafe.com/scalaide-pack/3.0.3.vfinal-210-20140327/scala-SDK-3.0.3-2.10-macosx.cocoa.x86_64.zip">MaxOS X Cocoa (64 bit)</a></li> |
| <li><a href="http://downloads.typesafe.com/scalaide-pack/3.0.3.vfinal-210-20140327/scala-SDK-3.0.3-2.10-macosx.cocoa.x86.zip">MaxOS X Cocoa (32 bit)</a></li> |
| <li><a href="http://downloads.typesafe.com/scalaide-pack/3.0.3.vfinal-210-20140327/scala-SDK-3.0.3-2.10-win32.win32.x86_64.zip">Windows (64 bit)</a></li> |
| <li><a href="http://downloads.typesafe.com/scalaide-pack/3.0.3.vfinal-210-20140327/scala-SDK-3.0.3-2.10-win32.win32.x86.zip">Windows (32 bit)</a></li> |
| </ul> |
| |
| <p>Alternatively, you can download Eclipse Kepler from <a href="https://eclipse.org/downloads/packages/release/Kepler/SR2">https://eclipse.org/downloads/packages/release/Kepler/SR2</a> |
| and manually add the Scala and Maven plugins by plugin site at <a href="http://scala-ide.org/download/prev-stable.html">http://scala-ide.org/download/prev-stable.html</a>.</p> |
| |
| <ul> |
| <li>Either use the update site to install the plugin (“Help” -> “Install new Software”)</li> |
| <li>Or download the <a href="http://download.scala-ide.org/sdk/helium/e38/scala211/stable/update-site.zip">zip file</a>, unpack it, and move the contents of the |
| “plugins” and “features” folders into the equally named folders of the Eclipse root directory</li> |
| </ul> |
| |
| <h3 id="eclipse-scala-ide-400">Eclipse Scala IDE 4.0.0</h3> |
| |
| <p><strong>NOTE: From personal experience, the use of the Scala IDE 4.0.0 performs worse than previous versions for complex projects like Flink.</strong> |
| <strong>Version 4.0.0 does not handle mixed Java/Scala projects as robustly and it frequently raises incorrect import and type errors.</strong></p> |
| |
| <p><em>Note:</em> Before following this setup, make sure to run the build from the command line once |
| (<code>mvn clean package -DskipTests</code>)</p> |
| |
| <ol> |
| <li>Download the Scala IDE: <a href="http://scala-ide.org/download/sdk.html">http://scala-ide.org/download/sdk.html</a></li> |
| <li>Import the Flink Maven projects (File -> Import -> Maven -> Existing Maven Projects)</li> |
| <li>While importing the Flink project, the IDE may ask you to install an additional maven build helper plugin.</li> |
| <li>After the import, you need to set the Scala version of your projects to Scala 2.10 (from the default 2.11). |
| To do that, select all projects that contain Scala code (marked by the small <em>S</em> on the project icon), |
| right click and select “Scala -> Set the Scala Installation” and pick “2.10.4”. |
| Currently, the project to which that is relevant are “flink-runtime”, “flink-scala”, “flink-scala-examples”, |
| “flink-streaming-example”, “flink-streaming-scala”, “flink-tests”, “flink-test-utils”, and “flink-yarn”.</li> |
| <li>Depending on your version of the Scala IDE, you may need to add the “macroparadise” compiler plugin to the |
| Scala compiler. Open “Window” -> “Preferences” -> “Scala” -> “Compiler” -> “Advanced” and put into the “Xplugin” field |
| the path to the <em>macroparadise</em> jar file (typically “/home/<em>-your-user-</em>/.m2/repository/org/scalamacros/paradise_2.10.4/2.0.1/paradise_2.10.4-2.0.1.jar”)</li> |
| <li>In order to compile the “flink-java-8” project, you may need to add a Java 8 execution environment. |
| See <a href="http://stackoverflow.com/questions/25391207/how-do-i-add-execution-environment-1-8-to-eclipse-luna">this post</a> |
| for details.</li> |
| </ol> |
| |
| <h2 id="intellij-idea">IntelliJ IDEA</h2> |
| |
| <p>A brief guide on how to set up IntelliJ IDEA IDE for development of the Flink core. |
| As Eclipse is known to have issues with mixed Scala and Java projects, more and more contributers are migrating to IntelliJ IDEA.</p> |
| |
| <p>The following documentation describes the steps to setup IntelliJ IDEA 14.0.3 (https://www.jetbrains.com/idea/download/) with the Flink sources.</p> |
| |
| <p>Prior to doing anything, make sure that the Flink project is built at least once from the terminal: |
| <code>mvn clean package -DskipTests</code></p> |
| |
| <h3 id="installing-the-scala-plugin">Installing the Scala plugin</h3> |
| <ol> |
| <li>Go to IntelliJ plugins settings (File -> Settings -> Plugins) and click on “Install Jetbrains plugin…”.</li> |
| <li>Select and install the “Scala” plugin.</li> |
| <li>Restart IntelliJ</li> |
| </ol> |
| |
| <h3 id="installing-the-scala-compiler-plugin">Installing the Scala compiler plugin</h3> |
| <ol> |
| <li>Go to IntelliJ scala compiler settings (File -> Settings -> Build, Execution, Deployment -> Compiler -> Scala Compiler) and click on “Install Jetbrains plugin…”.</li> |
| <li>Click on the green plus icon on the right to add a compiler plugin</li> |
| <li>Point to the paradise jar: ~/.m2/repository/org/scalamacros/paradise_2.10.4/2.0.1/paradise_2.10.4-2.0.1.jar If there is no such file, this means that you should build Flink from the terminal as explained above.</li> |
| </ol> |
| |
| <h3 id="importing-flink">Importing Flink</h3> |
| <ol> |
| <li>Start IntelliJ IDEA and choose “Import Project”</li> |
| <li>Select the root folder of the Flink repository</li> |
| <li>Choose “Import project from external model” and select “Maven”</li> |
| <li>Leave the default options and finish the import.</li> |
| </ol> |
| |
| </div> |
| |
| <div class="col-sm-10 col-sm-offset-1"> |
| <!-- Disqus thread and some vertical offset --> |
| <div style="margin-top: 75px; margin-bottom: 50px" id="disqus_thread"></div> |
| </div> |
| </div> |
| |
| </div><!-- /.container --> |
| |
| <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> |
| <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> |
| <!-- Include all compiled plugins (below), or include individual files as needed --> |
| <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> |
| <script src="http://flink.apache.org/docs/master/page/js/codetabs.js"></script> |
| |
| <!-- Google Analytics --> |
| <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'); |
| |
| ga('create', 'UA-52545728-1', 'auto'); |
| ga('send', 'pageview'); |
| </script> |
| |
| <!-- Disqus --> |
| <script type="text/javascript"> |
| var disqus_shortname = 'stratosphere-eu'; |
| (function() { |
| var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; |
| dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; |
| (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); |
| })(); |
| </script> |
| </body> |
| </html> |