项目中混入scala代码,免费IDE编辑器才是Java程序

作者: 冶金矿产  发布:2019-10-24

Spark 是用Scala代码写的。为了调试Spark,做了如下尝试。

Spark 源码和应用开发环境的构建

调试与阅读 Spark 源代码无疑是深入学习 Spark 内部原理的有效途径,本文基于作者亲身实践,针对常用的开发工具,快速的构建 Spark 的源代码开发调试环境,从而帮助读者能够快速进入 Spark 内部的学习。

 

引言

Spark 现在无疑是大数据领域最热门的技术之一,读者很容易搜索到介绍如何应用 Spark 技术的文章,但是作为开发人员,在了解了应用的概念之后,更习惯的是打开开发环境,开发一些应用来更深入的学习 spark 知识,在遇到问题的时候,也希望能够深入调试 Spark 源代码来解决问题。但是由于 Spark 技术本身较新,对于初学者,在构建开发调试环境的过程中,总会遇到这样那样的问题。而其使用的 Scala 语言,SBT 构建工具相对于 Java 语言,Maven 构建工具而言,也比较小众,因些在 Web 上能够参考的信息相对也比较少。本文结合作者的实践,从 Spark 的源码开始编译整个项目,同时给出了一些在编译过程中可能出现的问题,供使用参考。文中各步骤展示的编译方法主要用于方便学习 Spark 源码,若仅需要编写 Spark 应用则不需要如此繁复的流程,具体引用方法可参考最后一章。

Java开发人员需要花费大量的时间埋头于Java代码中,使用各种不同的IDE(Intergrated Development Environment)来开发Java代码,所以下面我将为大家介绍11个不同的IDE,这些IDE提供了多种功能,如:构建Java应用、 TestNG、调试、代码检查、代码帮助、JUNIT测试、多元重构、可视化GUI构建器和代码编辑器、Java和Maven构建工具、ant、数据建模 和构建查询,等等。

1、Eclipse下:Java 项目 ,Using Maven,编写了一个java 版Spark应用。 Spark的代码(scala代码可以调试,但是查看变量极不方便,不忍直视,毕竟调试器时Java的,但代码是scala生成的字节码,还是有出入的)。

环境要求

  1. 系统:Windows/Linux/Mac OS
  2. IDE:Eclipse/IntelliJ
  3. 其他依赖:Scala,Sbt,Maven

图片 1

2、Scala IDE下:Scala 项目,Using Maven,编写一个Scala版的Spark应用。

Eclipse 下开发调试环境的配置

该小节中使用的各项工具分别为:Windows 7+Eclipse Java EE 4.4.2+Scala 2.10.4+Sbt 0.13.8+Maven3.3.3,测试的 Spark 版本为 1.4.0。

1.配置 IDE:

如图 1 所示,选择菜单项 Help->Install new software,添加站点 Scala IDE for Eclipse 以及 Scala IDE Plugins。

1.NetBeans

报找不到类的异常。解决该问题的方法是:

图 1. 配置 IDE

图片 2

NetBeans是一款用Java编写的开源IDE,是IDR解决方案最喜欢使用的Java IDE编辑器之一。

简单点说:

图 1. 配置 IDE

图片 3  

对于标准版 Eclipse,还需要安装单独的 Maven 插件。

出于配置简便考虑,也可以使用 Scala 官方提供的已将所有依赖打包好的 Scala IDE。

特别的,由于项目本身存在一些错误,请先暂时关闭 Project->Build Automatically 的功能以节省时间。

2.下载 Spark 源代码:

创建空目录,执行如下语句:git clone

除了使用 git 指令之外,也可以从 Spark 的 Github 页面下载打包好的源代码。

3.将源码转化为 Eclipse 项目:

进入源代码根目录,执行如下语句:sbt eclipse。Sbt 执行期间会下载 Spark 所需要的所有 jar 包,因此该步骤会花费很长的时间。其中有一些 jar 包需要使用网络代理等方法才能下载。执行成功之后会有如图 2 的输出。

NetBeans IDE支持所有Java应用类型(Java SE、JavaFX、Java ME、网页、EJB和移动app)标准开箱即用式的开发。 NetBeans模块化的设计意味着它可以由第三方创建提升功能的插件来扩展NetBeans(比如说,NetBeans的PDF插件就是一个很好的例 子)。

第一步:升级Maven插件

图 2. 转化为 Eclipse 项目

图片 4

4.导入项目至 Eclipse:

选择菜单项 File->Import,并选择 General->Existing Projects into Workspace,项目的根路径选择源代码的根路径,导入所有项目(共有 25 个)。

5.修改 Scala 版本:

进入 Preference->Scala->Installations,添加机器上安装的 Scala 2.10.4(选择 lib 目录)。由于该版本 Spark(1.4.0)是在 Scala 2.10.4 的环境下编写的,需要在 Eclipse 中修改项目使用的 Scala 版本。方法为:全选项目,右键选择 Scala->Set the Scala Installation 并选择相应的 Scala 版本。如图 3 所示。

NetBeans IDE既可用于Java开发,也支持其他语言,特别是PHP、C/C ++,和HTML5。

   因为Scala IDE本事就是一个有Scala插件、Maven插件的Eclipse。但是内置的Maven插件只能创建Java项目,不能创建Scala项目。所以要更新Maven插件。

图 3. 修改 Scala 版本

图片 5

6.为 old-deps 项目添加 Scala Library:

右键选择 old-deps 项目,选择 Scala->Add Scala Library to Build Path。

7.Maven install 以生成 spark-streaming-flume-sink 所需要的类:

首先将源代码根目录中的 scalastyle-config.xml 文件复制到 spark-streaming-flume-sink 项目根目录中,而后在 Eclipse 中打开该项目,右键选择 pom.xml 文件,选择 Run as->Maven install。如图 4 所示。

NetBeans功能是基于Ant的项目系统,支持Maven、重构、版本控制(支持CVS、Subversion、GIT、 Mercurial 和ClearCase),并且是在由通用开发和发布协议(CDDL)v1.0和GNU通用公共协议(GPL)v2构成的双重协议下发布的。

第二步:创建Maven项目时,选择scala的archetypes。

图 4.Maven install

图片 6

运行成功之后 console 会输出如图 5 内容。

NetBeans可跨平台运行在微软Windows、Mac OS X、Linux、Solaris和支持兼容JVM的其他平台上。

 

图 5.Maven install 成功

图片 7

8.修改 spark-sql 与 spark-hive 的包错误:

由于源代码的包设置有错误,为此需要将类文件移至正确的包中。如图 6 所示。

官方网站:

 

图 6. 修改包错误

图片 8

对于 spark-sql 项目,分别选择 src/test/java 中的 test.org.apache.spark.sql 以及 test.org.apache.spark.sql.sources 包中的所有类,右键选择 Refactor->Move,移动至 org.apache.spark.sql 以及 org.apache.spark.sql.sources 包。

对于 spark-hive 项目,分别选择 src/test/java 中的 test.org.apache.spark.sql.hive 以及 test.org.apache.spark.sql.hive.execution 包中的所有类,移动至 org.apache.spark.sql.hive 以及 org.apache.spark.sql.hive.execution 包。

2.Eclipse

但是因为Scala IDE下载相关插件,速度实在是不敢恭维,就此作罢。

--------------------------------------分割线

Spark1.0.0部署指南

CentOS 6.2(64位)下安装Spark0.8.0详细记录

Spark简介及其在Ubuntu下的安装使用

安装Spark集群(在CentOS上)

Hadoop vs Spark性能对比

Spark安装与学习

Spark 并行计算模型

Eclipse是一款主要用Java编写的免费Java IDE。Eclipse允许你创建各种跨平台的可用于手机、网络、桌面和企业领域的Java应用程序。

 

--------------------------------------分割线

9.编译所有项目:

打开 Project->Build Automatically 功能,等待所有项目编译成功。

10.检查是否安装成功:

将 core 项目中的 src->main->resources->org 文件夹拷贝到 examples 项目中的 target->scala-2.10->classes 中。而后执行 examples 项目中的 org.apache.spark.examples.SparkPi 程序,并设置其 jvm 参数为-Dspark.master=local,若最后输出如图 7 结果则说明安装成功。

它的主要功能包括Windows生成器、集成Maven、Mylyn、XML编辑器、Git客户端、CVS客户端、PyDev,并且Eclipse 还有一个基本工作区,里面的可扩展插件系统,可满足你自定义IDE的需求。通过插件,你也可以用其他编程语言开发应用程序,语言包括C、C ++、JavaScript、Perl、PHP、Prolog、Python、R、Ruby(包括Ruby on Rails框架),等等。

3、Scala IDE下:Java 项目,Using Maven,编写Scala 版的Spark应用。

图 7.SparkPi 运行结果

图片 9

更多详情见请继续阅读下一页的精彩内容:

  • 1
  • 2
  • 下一页

源码和应用开发环境的构建 调试与阅读 Spark 源代码无疑是深入学习 Spark 内部原理的有效途径,本文基于作者亲身实践,针对常用的开...

Eclipse在Eclipse公共协议下可用,并且适用于Windows、Mac OS X和Linux。

在pom.xml中配置 scala编译器,以使使用Maven构建时,会使用Scala相关的编译器对Scala代码进行编译,生成字节码。

官方网站:

这样一来,就可以使用Scala调试器进行调试了。

3.IntelliJ IDEA Community Edition

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.fjn.helper</groupId>
  <version>0.0.1-SNAPSHOT</version>
  <artifactId>frameworkex-apache-spark</artifactId>
  <name>frameworkex-apache-spark</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>2.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming_2.10</artifactId>
        <version>2.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.10.6</version>
    </dependency>

  </dependencies>
    <build>
        <plugins>
            <!-- This plugin compiles Scala files -->
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>scala-compile-first</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>add-source</goal>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>scala-test-compile</id>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- This plugin compiles Java files -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- This plugin adds all dependencies to JAR file during 'package' command.
            Pay EXTRA attention to the 'mainClass' tag.
            You have to set name of class with entry point to program ('main' method) -->

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>sparkTest1</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

IntelliJ IDEA Community Edition(社区版)是一款免费的Java IDE(集成开发环境),主要用于Android应用开发、Scala、Groovy、Java SE和Java编程。它设计轻巧,并提供如JUnit测试、TestNG、调试、代码检查、代码完成、支持多元重构、Maven构建工具、ant、可视化 GUI构建器和XML和Java代码编辑器等有用的功能。

 

当然有一些功能在社区版上是没有的,所以如果你需要更多功能的话,不妨买一个许可证来解锁所有功能。

IntelliJ IDEA Community Edition(社区版)是在Apache 2协议下发布的。

官方网站:

4.Android Studio

谷歌的Android Studio主要设计用于在Android平台上的开发,并且还可以运行和编辑一些Java代码。

起初Android Studio是JetBrains公司在IntelliJ IDEA Community Edition(社区版)基础上创建的。同时它也基于了Gradle的编译系统、变量设置以及多个APK的生成系统,另外还支持可扩展的模板和多种设备类 型。其丰富的布局编辑器还可以满足对不同主题的布局编辑,它提供的Android Lint工具可用来对Android项目源代码进行扫描和检查,发现潜在的问题。

它还有ProGuard和app-signing功能,支持谷歌云平台和项目的内置功能,可以配置为使用Java开发工具包(JDK)6或JDK 7。

本文由88必发手机版发布于冶金矿产,转载请注明出处:项目中混入scala代码,免费IDE编辑器才是Java程序

关键词: