操作
一般大家都是用的spark-x.x.x-bin-hadoop2.x
的spark
而我用的是spark-2.1.0-bin-without-hadoop
,所以我们要使用HDFS的时候,就必须让程序能够找到Hadoop的HDFS
所以我们不仅要像一般的Idea运行集群操作一样给工程添加
$SPARK_HOME/jars
到工程的Libraries,参考
IDEA开发Spark应用实战(Scala)_推荐
Window环境下使用IntelliJ IDEA调试Spark Application
而且我们还要导入hadoop的包
通过文章Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream的举一反三
$HADOOP_HOME/share/hadoop/common/lib/*
$HADOOP_HOME/share/hadoop/common/*
$HADOOP_HOME/share/hadoop/hdfs/*
$HADOOP_HOME/share/hadoop/hdfs/lib/*
$HADOOP_HOME/share/hadoop/yarn/lib/*
$HADOOP_HOME/share/hadoop/yarn/*
$HADOOP_HOME/share/hadoop/mapreduce/lib/*
$HADOOP_HOME/share/hadoop/mapreduce/*
$HADOOP_HOME/share/hadoop/tools/lib/*
展示以及验证
小缺憾
一般我们的默认路径,图中未注释的样子,和图中注释的样子,是等价的HDFS的路径,但是这windows的idea还是做不到
小发现
用户所有者
HDFS上文件的owner是我们windows的用户名,因为我的用户名是单林敏
,所以在HDFS上会乱码成如下图
离线不可以直接连接HDFS,但是可以打Jar包
生成的jar包真大
生成这么大的jar包导致出了大问题
见spark-submit运行idea生成的jar包无法找到主类
参考文章
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream