IDEA15 下運行Scala遇到問題以及解決辦法

爲了讓Scala運行起來仍是很麻煩,爲了你們方便,仍是記錄下來:java

一、首先我下載的是IDEA的社區版本,版本號爲15.

二、下載安裝scala插件:

2.1 進入設置菜單。shell

  

2.2 點擊安裝JetBrains pluginapache

2.3 輸入scala查詢插件,點擊安裝app

說明:個人IDEA已經安裝,因此這裏面沒有顯示出來安裝按鈕,不然右邊有顯示綠色按鈕。oop

 

三、新建Scala工程

3.1 新建工程

經過菜單:File----》New Project 選擇Scala工程。ui

而且設置項目基本信息,以下圖:google

 

3.2 設置Modules

1)點擊右上角的方塊:spa

 

2)在左邊選擇Libraries---》+---》Scala SDK--》選擇版本爲2.10.4 插件

說明:若是不存在這個版本能夠經過左下角的download去下載。scala

3)選擇添加Java的Jar文件,選擇Spark和Hadoop關聯的Jar

我這裏添加的是:spark-assembly-1.6.1-hadoop2.6.0.jar 這個是spark安裝時候自帶的lib裏面有,很大。

定位到jar所在的目錄後,刷新,選擇這個文件,點擊OK,會花費比較長時間建索引。

 

4)在Src源碼目錄新建文件:WordCount.scala

且輸入以下代碼:

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.SparkContext._

object WordCount {
  def main(args: Array[String]) {
    if (args.length < 1) {
      System.err.println("Usage:<File>")
      System.exit(1)
    }
    val conf = new SparkConf().setAppName("WordCount")
    val sc = new SparkContext(conf)
    val line = sc.textFile(args(0))

    val words = line.flatMap(_.split("")).map((_, 1))
    val reducewords = words.reduceByKey(_ + _).collect().foreach(println)

    sc.stop()
  }

}

 5)編譯運行:

  須要輸入參數,因此要設置下相關參數信息:

隨便複製個文件過去,而後設置下:

  • 拋出異常:

Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration
at org.apache.spark.SparkContext.<init>(SparkContext.scala:401)

解決辦法:須要設置下SparkContext的地址:

 

  •  拋出異常:

16/06/25 12:14:18 ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

解決辦法:

http://stackoverflow.com/questions/19620642/failed-to-locate-the-winutils-binary-in-the-hadoop-binary-path

多是由於我沒有安裝hadoop的緣由,設置下相關信息就能夠:

下載:

<a href="http://www.srccodes.com/p/article/39/error-util-shell-failed-locate-winutils-binary-hadoop-binary-path">Click here</a>

設置:HADOOP_HOME爲下載後解壓內容的上級目錄,而後在PATH裏面添加%HADOOP_HOME%/bin;

四、其餘異常

1)異常內容:類或Object XXX已經被定義

     解決辦法: 這個多是工程裏面設置了兩個source目錄,須要刪除一個。

2)異常內容:sparkContext.class 依賴不存在

    解決辦法:須要引入hadoop的jar包,我這裏是:spark-assembly-1.6.1-hadoop2.6.0.jar

3)異常內容:Error:(17, 29) value reduceByKey is not a member of org.apache.spark.rdd.RDD[(String, Int)]

   解決辦法: 導入這個:  import org.apache.spark.SparkContext._

4)異常內容:Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/util/concurrent/ThreadFactoryBuilder

   解決辦法:添加依賴Jar :guava-11.0.2.jar

5)異常內容:Exception in thread "main" java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()Lscala/collection/immutable/HashSet;

  解決辦法:更改scala-sdk版本爲2.10,若是沒有經過以下方式下載:(速度奇慢)

經過project Structure--》LIbraries--》+---》Scala SDK--》 Browse--》選擇2.10---》Download...
 
6)異常內容: java.lang.AbstractMethodError   at akka.actor.ActorCell.create(ActorCell.scala:580)
   解決辦法: 不知道怎麼好了,JDK從1.8換到1.7,再次換到1.8就行了,莫名。
 

五、打包成Jar

 

一、設置下導出Jar信息:

二、設置導出的工程還導出的Main類:

三、經過選擇點擊-號刪除其餘依賴的class

四、導出Jar包:

 

五、上傳後執行Jar包

 ./spark-submit --master spark://inas:7077 --class WordCount --executor-memory 512m /home/hadoop/sparkapp/scalatest4.jar hdfs://inas:9000/user/hadoop/input/core-site.xml

說明: hadoop文件爲之前新建的,在提交以前須要先啓動hadoop再自動spark,而後再用以上辦法提交。

啓動Hdfs: ./start-dfs.sh

啓動spark:./sbin/start-all.sh(沒試過)

能夠經過以下方法啓動:

~/project/spark-1.3.0-bin-hadoop2.4 $./sbin/start-master.sh
~/project/spark-1.3.0-bin-hadoop2.4 $./bin/spark-class org.apache.spark.deploy.worker.Worker spark://inas:7077
注意:必須使用主機名

啓動模式爲standaline模式。

Spark Standalone Mode 多機啓動,則其餘主機做爲worker啓動,設置master主題。

相關文章
相關標籤/搜索