目的:利用Intellij IDEA完成简单的Spark Maven工程导入及本地调试运行。不导入Spark工程源代码。

原料:

  • Java 8
  • Intellij IDEA

步骤:

  • 打开Intellij IDEA,创建新工程

[open]

  • 创建Maven工程

[create]

  • 填入自己的groupid和artifactid(不确定就随便填就好,用来标示是自己的程序不和别人冲突)
  • 下一步,完成工程创建
  • 打开左边的project视图,双击pom.xml文件,加入spark依赖

[edit]

加入代码段=。=

    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.10</artifactId>
            <version>2.2.0</version>
        </dependency>
    </dependencies>

Maven 依赖可以从maven的中央仓库去搜索, 部分库可能需要科学才能用,https://search.maven.org/

  • 保存文件,左边project视图右键点击pom.xml,选择maven - reimport (或者generate source and update folder,忘了哪个,或者右下角弹窗点击reimport,反正这里的目的是让maven自动把依赖的jar下载到本地),等待一段时间,下面的进度条跑完,就下载好依赖了,代码上的红色字也消失了,就resolve好了

[resolve]

  • 创建Java源代码文件:Project - src - main - java目录下右键创建SparkPiExample.java文件,拷贝进去代码,注意包名称
package com.hotdrynoodle.spark;

import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SparkSession;

import java.util.ArrayList;
import java.util.List;

/**
 * Computes an approximation to pi
 * Usage: JavaSparkPi [partitions]
 */
public class SparkPiExample {

    public static void main(String[] args) throws Exception {
        SparkSession spark = SparkSession
                .builder()
                .master("local")
                .appName("JavaSparkPi")
                .getOrCreate();

        JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext());


        int slices = (args.length == 1) ? Integer.parseInt(args[0]) : 2;
        int n = 100000 * slices;
        List<Integer> l = new ArrayList<>(n);
        for (int i = 0; i < n; i++) {
            l.add(i);
        }

        JavaRDD<Integer> dataSet = jsc.parallelize(l, slices);

        int count = dataSet.map(integer -> {
            double x = Math.random() * 2 - 1;
            double y = Math.random() * 2 - 1;
            return (x * x + y * y <= 1) ? 1 : 0;
        }).reduce((integer, integer2) -> integer + integer2);

        System.out.println("Pi is roughly " + 4.0 * count / n);

        jsc.close();
        spark.stop();
    }
}

[build]

  • 运行

[run]

 

others:

还是有很多不必要的步骤的,比方说maven包依赖,似乎这个程序并没有引用到sql包,习惯性的引入sql了,可以考虑替换~~

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐