【idea】scala&sbt+idea安裝配置與測試

1、IDEA安裝java

下載Community版的IDEA,Ultimate是免費試用版(至關於用到後面要給錢的)linux

ideaIC-2019.2.3.tar.gzredis

解壓IDEA:apache

tar -zxvf ideaIC-2019.2.3.tar.gzjson

查看目錄:多線程

[hadoop@hadoop01 idea-IC-192.6817.14]$ ls -ll

total 52

drwxrwxr-x.  2 hadoop hadoop  4096 Oct  2 22:08 bin

-rw-r--r--.  1 hadoop hadoop    14 Sep 24 12:43 build.txt

-rw-r--r--.  1 hadoop hadoop  1914 Sep 24 12:43 Install-Linux-tar.txt

drwxrwxr-x.  7 hadoop hadoop    83 Oct  2 22:08 jbr

drwxrwxr-x.  4 hadoop hadoop  8192 Oct  2 22:08 lib

drwxrwxr-x.  2 hadoop hadoop  4096 Oct  2 22:08 license

-rw-r--r--.  1 hadoop hadoop 11352 Sep 24 12:43 LICENSE.txt

-rw-r--r--.  1 hadoop hadoop   128 Sep 24 12:43 NOTICE.txt

drwxrwxr-x. 43 hadoop hadoop  4096 Oct  2 22:08 plugins

-rw-r--r--.  1 hadoop hadoop   370 Sep 24 12:46 product-info.json

drwxrwxr-x.  2 hadoop hadoop    35 Oct  2 22:08 redist

啓動iedea:app

[hadoop@hadoop01 bin]$ ./idea.sh

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

 

Startup Error: Unable to detect graphics environment

報錯:Unable to detect graphics environment框架

解決辦法:不要在外面經過遠程的方式執行此啓動命令,要在linux圖形界面中打開終端來執行此命令dom

在linux終端中執行命令啓動idia:ide

[hadoop@hadoop01 ~]$ cd idea-IC-192.6817.14

[hadoop@hadoop01 idea-IC-192.6817.14]$ bin/idea.sh

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

下載安裝scala插件

 scala-intellij-bin-2019.2.3.zip 放在 scala主目錄plugins文件夾裏

注:scala插件必定要與idea版本對應,如個人就是:scala-intellij-bin-2019.2.3.zip對應ideaIC-2019.2.3.tar.gz

再在啓動的idea中找到setting裏面的plugins中選擇install plugin from disk…

選中插件包

 

最後重啓idea,便可。

2、IDEA 使用

建立scala新工程

 

 

注:選擇IDEA 即是建立普通的Scala 項目(注:IJ IDEA版本的不一樣,這裏IDEA可能顯示成Scala,不過這個並無什麼影響)

工程的基本頁面設置:

 

其中:

project name    :工程名稱

project location  :工程文件地址

jdk             :使用的java version 版本,未找到時,本身選擇jdk的安裝目錄

scala SDK       :使用scala版本,未找到時,本身選擇scala的安裝目錄

點擊finish後,進入設計主頁面

 

這個時候,第一次系統會對設置進行索引。

這裏須要指出,IDEA對新工程的索引須要時間,長短視虛擬機的配置而定

src處右鍵new—package,準備建立一個scala

Package name com.hadoop

配置工程結構(project structure),爲了導入spark依賴包

依次選擇主界面的file-- project structure,在彈出的對話框中選擇librarie --+--java,選擇虛擬機中已安裝spark目錄下的jars下全部的jar

 

點擊OK後,系統會再次進行索引

建立scala

com.hadoop包上右鍵new – scala class,彈出以下界面

輸入sparkPi,並選擇object

 

運行以前,須要修改運行參數

在主界面選擇run菜單中的edit  configurations ,在彈出的對話框中左上角點擊「+」,在彈出的列表中,選擇application,填寫運行參數:

修改的參數有三個:

Name sparkPi

Main classcom.hadoop.sparkPi

VM options -Dspark.master=local -Dspark.app.name=sparkPi

注:VM options 也能夠不填寫,可是要在代碼中加入

.setMaster("local").setAppName("sparkPi")

填寫完成後,直接點擊OK

 

3、測試

一、測試程序:

package com.hadoop

import scala.math.random
import org.apache.spark._

object sparkPi {

  def main(args: Array[String]) {

    println("Hello, World!")
  }
}

Run程序後,結果以下:

二、編寫工程:

package com.hadoop

import scala.math.random
import org.apache.spark._
 
object sparkPi {
  def main(args: Array[String]) {
    val conf = new SparkConf().setMaster("local").setAppName("sparkPi")
    val spark = new SparkContext(conf)
    val slices = if (args.length > 0) args(0).toInt else 2
    val n = 10000 * slices
    val count = spark.parallelize(1 to n, slices).map { i =>
      val x = random * 2 - 1
      val y = random * 2 - 1
      if (x * x + y * y < 1) 1 else 0
    }.reduce(_ + _)
    println("Pi is roughly " + 4.0 * count / n)
    spark.stop()
  }
}

 

第一次運行結果:

報錯:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
       at org.apache.spark.SparkConf.loadFromSystemProperties(SparkConf.scala:76)
       at org.apache.spark.SparkConf.<init>(SparkConf.scala:71)
       at org.apache.spark.SparkConf.<init>(SparkConf.scala:58)
       at com.hadoop.sparkPi$.main(sparkPi.scala:9)
       at com.hadoop.sparkPi.main(sparkPi.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.fs.FSDataInputStream
       at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
       ... 5 more

緣由:缺乏對應的依賴包

解決辦法:下載spark-2.4.4-bin-hadoop2.6,將裏面jars包拷貝進去,或者直接從新配置spark-2.4.4-bin-hadoop2.6

 

第二次運行結果:

報錯:

Exception in thread "main" java.lang.IllegalArgumentException: System memory 425197568 must be at least 471859200. 
Please increase heap size using the --driver-memory option or spark.driver.memory in Spark configuration.

緣由:Spark是很是依賴內存的計算框架,在虛擬環境下使用local模式時,其實是使用多線程的形式模擬集羣進行計算,於是對於計算機的內存有必定要求,這是典型的由於計算機內存不足而拋出的異常。

解決辦法:

在下面這出代碼後面添加:「.set("spark.testing.memory","2147480000")」,其實上面的錯誤提醒了的,如「Please increase heap size using the --driver-memory option or spark.driver.memory in Spark configuration.

val conf = new SparkConf().setMaster("local").setAppName("sparkPi") //添加後

 

第三次運行(成功):

結果:Pi is roughly 3.1304

 

附_完整測試代碼:

package com.hadoop

import scala.math.random
import org.apache.spark._

object sparkPi {
  def main(args: Array[String]) {
    val conf = new SparkConf().setMaster("local").setAppName("sparkPi").set("spark.testing.memory","2147480000")
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
    val spark = new SparkContext(conf)
    val slices = if (args.length > 0) args(0).toInt else 2
    val n = 10000 * slices
    val count = spark.parallelize(1 to n, slices).map { i =>
      val x = random * 2 - 1
      val y = random * 2 - 1
      if (x * x + y * y < 1) 1 else 0
    }.reduce(_ + _)
    println("Pi is roughly " + 4.0 * count / n)
    spark.stop()
  }
}
相關文章
相關標籤/搜索