Idea本地运行spark,操作HDFS(spark-without-hadoop版的spark)

操作

一般大家都是用的spark-x.x.x-bin-hadoop2.x的spark

而我用的是spark-2.1.0-bin-without-hadoop,所以我们要使用HDFS的时候,就必须让程序能够找到Hadoop的HDFS

所以我们不仅要像一般的Idea运行集群操作一样给工程添加
$SPARK_HOME/jars到工程的Libraries,参考Window环境下使用IntelliJ IDEA调试Spark Application

Idea本地运行spark,操作HDFS(spark-without-hadoop版的spark)

而且我们还要导入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/*

展示以及验证

Idea本地运行spark,操作HDFS(spark-without-hadoop版的spark)

小缺憾

一般我们的默认路径,图中未注释的样子,和图中注释的样子,是等价的HDFS的路径,但是这windows的idea还是做不到
Idea本地运行spark,操作HDFS(spark-without-hadoop版的spark)

小发现

用户所有者

HDFS上文件的owner是我们windows的用户名,因为我的用户名是单林敏,所以在HDFS上会乱码成如下图
Idea本地运行spark,操作HDFS(spark-without-hadoop版的spark)

离线不可以直接连接HDFS,但是可以打Jar包

Idea本地运行spark,操作HDFS(spark-without-hadoop版的spark)

生成的jar包真大

Idea本地运行spark,操作HDFS(spark-without-hadoop版的spark)

参考文章

Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream