IDEA15 下运行Scala遇到问题以及解决办法
為了讓Scala運(yùn)行起來還是很麻煩,為了大家方便,還是記錄下來:
1、首先我下載的是IDEA的社區(qū)版本,版本號(hào)為15.
2、下載安裝scala插件:
2.1 進(jìn)入設(shè)置菜單。
??
2.2 點(diǎn)擊安裝JetBrains plugin
2.3 輸入scala查詢插件,點(diǎn)擊安裝
說明:我的IDEA已經(jīng)安裝,所以這里面沒有顯示出來安裝按鈕,否則右邊有顯示綠色按鈕。
?
3、新建Scala工程
3.1 新建工程
通過菜單:File----》New Project 選擇Scala工程。
并且設(shè)置項(xiàng)目基本信息,如下圖:
?
3.2 設(shè)置Modules
1)點(diǎn)擊右上角的方塊:
?
2)在左邊選擇Libraries---》+---》Scala SDK--》選擇版本為2.10.4?
說明:如果不存在這個(gè)版本可以通過左下角的download去下載。
3)選擇添加Java的Jar文件,選擇Spark和Hadoop關(guān)聯(lián)的Jar
我這里添加的是:spark-assembly-1.6.1-hadoop2.6.0.jar 這個(gè)是spark安裝時(shí)候自帶的lib里面有,很大。
定位到j(luò)ar所在的目錄后,刷新,選擇這個(gè)文件,點(diǎn)擊OK,會(huì)花費(fèi)比較長(zhǎng)時(shí)間建索引。
?
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)編譯運(yùn)行:
? 需要輸入?yún)?shù),所以要設(shè)置下相關(guān)參數(shù)信息:
隨便復(fù)制個(gè)文件過去,然后設(shè)置下:
- 拋出異常:
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)
解決辦法:需要設(shè)置下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
可能是因?yàn)槲覜]有安裝hadoop的原因,設(shè)置下相關(guān)信息就可以:
下載:
<a href="http://www.srccodes.com/p/article/39/error-util-shell-failed-locate-winutils-binary-hadoop-binary-path">Click here</a>
設(shè)置:HADOOP_HOME為下載后解壓內(nèi)容的上級(jí)目錄,然后在PATH里面添加%HADOOP_HOME%/bin;
4、其他異常
1)異常內(nèi)容:類或Object XXX已經(jīng)被定義
? ? ?解決辦法: 這個(gè)可能是工程里面設(shè)置了兩個(gè)source目錄,需要?jiǎng)h除一個(gè)。
2)異常內(nèi)容:sparkContext.class 依賴不存在
? ? 解決辦法:需要引入hadoop的jar包,我這里是:spark-assembly-1.6.1-hadoop2.6.0.jar
3)異常內(nèi)容:Error:(17, 29) value reduceByKey is not a member of org.apache.spark.rdd.RDD[(String, Int)]
? ?解決辦法: 導(dǎo)入這個(gè):? import org.apache.spark.SparkContext._
4)異常內(nèi)容:Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/util/concurrent/ThreadFactoryBuilder
? ?解決辦法:添加依賴Jar :guava-11.0.2.jar
5)異常內(nèi)容: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)異常內(nèi)容:java.lang.AbstractMethodError? at akka.actor.ActorCell.create(ActorCell.scala:580) ? ?解決辦法: 不知道怎么好了,JDK從1.8換到1.7,再次換到1.8就好了,莫名。5、打包成Jar
?
1、設(shè)置下導(dǎo)出Jar信息:
2、設(shè)置導(dǎo)出的工程還導(dǎo)出的Main類:
3、通過選擇點(diǎn)擊-號(hào)刪除其他依賴的class
4、導(dǎo)出Jar包:
?
5、上傳后執(zhí)行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文件為以前新建的,在提交之前需要先啟動(dòng)hadoop再自動(dòng)spark,然后再用以上辦法提交。
啟動(dòng)Hdfs:?./start-dfs.sh
啟動(dòng)spark:./sbin/start-all.sh(沒試過)
可以通過如下方法啟動(dòng):
~/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
注意:必須使用主機(jī)名
啟動(dòng)模式為standaline模式。
Spark Standalone Mode 多機(jī)啟動(dòng),則其他主機(jī)作為worker啟動(dòng),設(shè)置master主題。
?
總結(jié)
以上是生活随笔為你收集整理的IDEA15 下运行Scala遇到问题以及解决办法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php毕设周记_毕设周记
- 下一篇: node.js Websocket消息推