Java版Spark的Eclipse本地Windows开发环境搭建

开发前需要准备好JDK、Scala、Hadoop、Spark环境。步骤如下:

  第一步:安装JDK

  第二步:安装Scala

  第三步: 配置Spark环境变量

  第四步:安装Hadoop客户端

  第五步:安装Eclipse

第一步:安装JDK

省略,配置完验证是否安装成功

Java版Spark的Eclipse本地Windows开发环境搭建

 

第二步:安装Scala

1、下载地址:http://www.scala-lang.org/download/

Java版Spark的Eclipse本地Windows开发环境搭建

2、下载完成后解压,增加PATH 变量

比如解压目录是D:\scala-2.11.11,然后新增环境变量SCALA_HOME,值为D:\scala-2.11.11,并把SCALA_HOME增加到环境变量PATH,即 ;%SCALA_HOME%\bin

进入cmd 界面测试Scala 是否安装成功:
C:\Users\Administrator>scala
Welcome to Scala 2.11.11 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_51).
Type in expressions for evaluation. Or try :help.

 

第三步: 配置Spark环境变量

1、下载Spark

下载地址:http://spark.apache.org/downloads.html,如spark-1.6.0-bin-hadoop2.6.tgz,spark版本是1.6.0,对应的hadoop版本是2.6。

2、解压,配置Spark的环境变量

             新增SPARK_HOME 变量,值为  D:\spark-1.6.0-bin-hadoop2.6
             增加PATH变量为  ;%SPARK_HOME%\bin

Java版Spark的Eclipse本地Windows开发环境搭建

 

第四步:安装Hadoop客户端

Spark是基于Hadoop之上的,运行过程中会调用相关Hadoop库,如果没配置相关Hadoop运行环境,会提示相关出错信息,虽然也不影响运行。Windows下开发Spark不需要在本地安装Hadoop,但是需要winutils.exe、hadoop.dll等文件。

1、下载Windows下Hadoop工具包(分为32位和64位的),比如hadoop-2.6.0.tar.gz

2、解压到D:\hadoop2.6\hadoop-2.6.0-cdh5.6.0,新建HADOOP_HOME变量,并添加到系统Path变量中;%HADOOP_HOME%\bin

Java版Spark的Eclipse本地Windows开发环境搭建

第五步:安装Eclipse

省略使用lambda语法,需要开发工具配置jdk8编译环境

----------------------------------------------------------------------------------------------------------------------------------------------------------------

以上环境准备好之后,开始Java语言进行Spark开发,local模式应用程序开发

1. 新建Maven 工程

2、配置pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.tydic</groupId>
    <artifactId>SparkDemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>SparkDemo</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>

        <dependency>
            <groupId>jdk.tools</groupId>
            <artifactId>jdk.tools</artifactId>
            <version>1.7</version>
            <scope>system</scope>
            <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.10</artifactId>
            <version>1.6.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase</artifactId>
            <version>1.0.0</version>
            <type>pom</type>
        </dependency>


        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-common</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>
</project>
 

3、Java代码(读取本地文件,统计a和b字母个数)

package com.zyl.local;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;

public class LocalFileDemo {

    public static void main(String[] args) {
        String logFile = "file:///D:/spark-1.6.0-bin-hadoop2.6/README.md";
        SparkConf conf = new SparkConf().setAppName("LocalFileDemo").setMaster("local[*]");
        JavaSparkContext sc = new JavaSparkContext(conf);
        JavaRDD<String> fileRdd = sc.textFile(logFile).cache();
        long numAs = fileRdd.filter(x->x.contains("a")).count();
        long numBs = fileRdd.filter(x->x.contains("b")).count();
        System.out.println("Lines with a: " + numAs + ",lines with b: " + numBs);
    }

}
 

4、运行结果

Java版Spark的Eclipse本地Windows开发环境搭建

 

总结:本地开发spark程序,主要是开发环境搭建较为复杂,但是方便后续开发代码调试,磨刀不误砍柴工嘛!!!