IDEA15 下執行Scala遇到問題以及解決辦法:
1、首先我下載的是IDEA的社群版本,版本號為15.
2、下載安裝scala外掛:
2.1 進入設定選單。
3、新建Scala工程
3.1 新建工程
透過選單:File----》New Project 選擇Scala工程。
並且設定專案基本資訊,如下圖:
3.2 設定Modules
2)在左邊選擇Libraries---》+---》Scala SDK--》選擇版本為2.10.4
說明:如果不存在這個版本可以透過左下角的download去下載。
3)選擇新增Java的Jar檔案,選擇Spark和Hadoop關聯的Jar
我這裡新增的是:spark-assembly-1.6.1-hadoop2.6.0.jar 這個是spark安裝時候自帶的lib裡面有,很大。
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的原因,設定下相關資訊就可以:
下載:
設定:HADOOP_HOME為下載後解壓內容的上級目錄,然後在PATH裡面新增%HADOOP_HOME%/bin;
4、其他異常
1)異常內容:類或Object XXX已經被定義
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就好了,莫名。
5、打包成Jar
1、設定下匯出Jar資訊:
2、設定匯出的工程還匯出的Main類:
4、匯出Jar包:
5、上傳後執行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主題。
IDEA15 下執行Scala遇到問題以及解決辦法:
1、首先我下載的是IDEA的社群版本,版本號為15.
2、下載安裝scala外掛:
2.1 進入設定選單。
3、新建Scala工程
3.1 新建工程
透過選單:File----》New Project 選擇Scala工程。
並且設定專案基本資訊,如下圖:
3.2 設定Modules
2)在左邊選擇Libraries---》+---》Scala SDK--》選擇版本為2.10.4
說明:如果不存在這個版本可以透過左下角的download去下載。
3)選擇新增Java的Jar檔案,選擇Spark和Hadoop關聯的Jar
我這裡新增的是:spark-assembly-1.6.1-hadoop2.6.0.jar 這個是spark安裝時候自帶的lib裡面有,很大。
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的原因,設定下相關資訊就可以:
下載:
;>Click here</a>設定:HADOOP_HOME為下載後解壓內容的上級目錄,然後在PATH裡面新增%HADOOP_HOME%/bin;
4、其他異常
1)異常內容:類或Object XXX已經被定義
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就好了,莫名。
5、打包成Jar
1、設定下匯出Jar資訊:
2、設定匯出的工程還匯出的Main類:
4、匯出Jar包:
5、上傳後執行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主題。