记录一次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>

 

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