• Unable to load native-hadoop library for your platform

    windows 下在 eclipse 执行spark相关的代码时,比如:

    def main(args: Array[String]) {

    val logFile = “D:/app/spark-2.1.1-bin-without-hadoop/README.md”;

    val conf = new SparkConf().setAppName(“Simple Application”)
    val sc = new SparkContext(conf)

    val logData = sc.textFile(logFile, 2).cache()
    val numAs = logData.filter(line => line.contains(“a”)).count()
    val numBs = logData.filter(line => line.contains(“b”)).count()
    println(s”Scala: Lines with a: $numAs, Lines with b: $numBs”)
    sc.stop()
    }

    会提示没有hadoop 本地库:

    WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

    解决办法,把 hadoop.dll 复制到 eclipse.exe 所在目录即可,类似 tomcat 的 tcnative-1.dll 的做法。
    而 hadoop 相关的windows 相关的二进制文件默认是没有提供下载的,可以在这里下载到,根据不同的hadoop版本复制到对应的bin目录即可。
    主要是 dll 文件和 exe 文件。
    Windows binaries for Hadoop versions

    https://github.com/steveloughran/winutils

     

  • 在windows下配置spark运行环境

    将以下内容保存为 spark-env.cmd 放到 spark-2.1.1-bin-without-hadoop\bin 目录。

    前提(安装好hadoop[比如 hadoop-2.6.3 ] 并配置环境好变量)

    @echo off
    rem ###################  SET ENV ##################
    rem  set SPARK_MASTER_IP=localhost
    rem  set SPARK_WORKER_CORES=1
    set SPARK_WORKER_MEMORY=1g

    echo HADOOP_HOME: %HADOOP_HOME%
    set HADOOP_CONF_DIR=”%HADOOP_HOME%\hadoop\etc\hadoop”
    echo HADOOP_CONF_DIR: %HADOOP_CONF_DIR%

    for /f %%i in (‘hadoop classpath’) do set SPARK_DIST_CLASSPATH=%%i

    echo SPARK_DIST_CLASSPATH: %SPARK_DIST_CLASSPATH%
    mkdir -p %SPARK_HOME%\temp
    SET temp=%SPARK_HOME%\temp

    echo %temp%

    然后先执行 spark-env

    在执行 spark-shell 即可成功。

  • 配置 scala sbt 工程

    配置 scala sbt 工程

    以下描述中的版本根据自己的情况进行修改,下载不了的可能需要挂代理。

    1、 下载sbt sbt-0.13.15.zip, 解压缩至 d:\app\sbt-0.13.15
    下载 scala 并解压缩到 d:\app\scala-2.12.1
    下载地址如下:

    https://github.com/sbt/sbt/releases/download/v0.13.15/sbt-0.13.15.zip
    https://downloads.lightbend.com/scala/2.12.1/scala-2.12.1.zip

    2、 修改缓存仓库配置,修改 conf/sbtopts 中的3个路径相关的配置:

    # Path to global settings/plugins directory (default: ~/.sbt)
    #
    -sbt-dir  e:/maven/.sbt

    # Path to shared boot directory (default: ~/.sbt/boot in 0.11 series)
    #
    -sbt-boot e:/maven/.sbt/boot

    # Path to local Ivy repository (default: ~/.ivy2)
    #
    -ivy e:/maven/.ivy2

    在系统中设置环境变量(有则增加):

    SBT_OPTS= -Dsbt.global.base=e:/maven/.sbt -Dsbt.ivy.home=e:/maven/.ivy2
    PATH=d:\app\scala-2.12.1\bin;d:\app\sbt-0.13.15\bin

    3. 在新建的 scala 工程的 project/plugins.sbt 中增加 eclipse 插件配置
    参考  https://github.com/typesafehub/sbteclipse

    addSbtPlugin(“com.typesafe.sbteclipse” % “sbteclipse-plugin” % “5.1.0”)

    4、通过cmd进入工程目录(包含 build.sbt 的目录), 执行 sbt eclipse

    输出没错误,且看到

    [info] About to create Eclipse project files for your project(s).

    [info] Successfully created Eclipse project files for project(s)

    则表示创建 scala 工程成功