最近換了新的電腦,好久不用的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>