記錄一次spark本地運行時的org.apache.hadoop.io.nativeio.NativeIO問題

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章