最近换了新的电脑,好久不用的win10系统,安装了maven,jdk,idea之后,从git上下载了代码库,希望可以本地调试运行spark代码,安装好系统环境后,代码可以运行起来了,代码就是很简单的将系统字符存储到当前文件中,代码如下:
def main(args :Array[String]) :Unit = {
val sparkConf = new SparkConf().setAppName("ArgsDemo")
val sparkSession = SparkSession.builder().appName("test").config(sparkConf).getOrCreate()
val path = new Path
val config = path.getPathConfig()
val rootPath = config.getString("root.path")
println(rootPath)
val seq = Seq("wfr")
val outPath = config.getString("root.path")
sparkSession.sparkContext.parallelize(seq).saveAsTextFile(outPath)
}
运行过程中一直出现java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO错误,发现spark环境要访问本地目录,需要安装hadoop环境,网上比较稳定的版本是2.8.3,并且有人分享的window编译版本,安装过程如下:
1).去官网https://archive.apache.org/dist/hadoop/common/下载hadoop-2.8.3,然后去 https://github.com/steveloughran/winutils 下载hadoop的windows插件工具
2).解压hadoop-2.8.3,配置环境变量HADOOP_HOME和path : %HADOOP_HOME%\bin ,到winutils找到对应的2.8.3版本的插件,覆盖到hadoop的bin目录。
配置好hadoop后本地环境依然报错,经过各种度娘查询,最终确定是由于引入的hadoop包的版本与本地安装的hadoop版本不匹配导致的,pom中以来的hadoop版本如下,为3.2.0版本的,改为2.8.3版本后,错误消失
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.2.0</version>
</dependency>