暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Spark 学习系列之四:在Intellij IDEA中运行Spark

技术白小白 2018-07-09
937

央视来拍纪录片了,应该能在电视上看到我了;


so,用什么eclipse写代码,IDEA才是正规军,不做杂牌军,走上人生巅峰。

1、在IDEA中创建Spark工程,常规操作:


2、其他操作可以参考一篇Spark 学习系列三: Setup Apache Spark in eclipse JAVA
3、也可以直接导入maven工程,上一篇中的代码已经上传我的github仓库,地址Line_Count_Spark:https://github.com/baymux/Spark-Learn/tree/master/Line_Count_Spark
下载之后可以直接导入:
下载

也可以通过IDEA直接导入:



这样,我们的完整工程就创建好了。

在IDEA中运行Spark。一般我们的代码要编译成jar包,提交到Spark去运行,这样很容易出错,并且不便于debug,因此我们要在IDEA中直接运行Spark程序。
1、设置 Spark 运行环境
代码已经提交至github;

package com.baymux.spark;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.api.java.function.Function;/**
 * Created by baymux on 2018/7/9
 * 计算文件中包含 python 的行数
 *
 * @author baymux
 **/public class PythonLine {    public static void main(String[] args) {
        SparkConf conf = new SparkConf();
        conf.setAppName("Python Line");
        JavaSparkContext context = new JavaSparkContext(conf);        final JavaRDD<String> textFileRDD = context.textFile("D:\\spark\\README.md");
        System.out.println(textFileRDD.count());
        JavaRDD<String> pythonLines = textFileRDD.filter(new Function<String, Boolean>() {            @Override
            public Boolean call(String line) throws Exception {                return line.contains("python");
            }
        });
        System.out.println(pythonLines);
    }
}
复制




OK,我们可以正常运行Spark程序了。
ps : 但是会出现java.io.IOException: Could not locate executablenull\bin\winutils.exe in the Hadoop binaries. 异常,我们是下载了winutils.exe文件的,但是没有找到路径。
分析源代码:我们看到 HADOOP_HOME_DIR这个变量为 null,


由此我们看到HADOOP_HOME_DIR由checkHadoopHome()这个方法获取。


由此我们可以看到,是由于获取系统环境变量是为null,但是我们在安装的时候配置了Hadoop的环境变量,因此怀疑是没有重启电脑造成的

重启电脑,问题解决;
运行如下:

THE END;

github地址:https://github.com/baymux/Spark-Learn

文章转载自技术白小白,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论