Idea下用SBT搭建Spark Helloworld


沒用過IDEA工具,聽說跟Eclipse差不多,sbt在Idea其實就等於maven在Eclipse。Spark運行在JVM中,所以要在Idea下運行spark,就先要安裝JDK 1.8+ 然后加入Scala和Spark的依賴包就可以進行開發了,不要安裝低版本的JDK。

 

先下載Idea的社區版

https://www.jetbrains.com/idea/download/download-thanks.html?platform=windows&code=IIC

 

Scala、Spark環境


安裝完后下載Scala插件

PJU5N~%]$3}$@Q8XAQX6}$B

新建sbt工程

1{7Z[O9RYO5RR]1TN{T%CI7

這里需要注意,如果選擇Spark2.0以上,那么Scala要選2.11以上。因為我用的是Spark2.0.2,所以就選擇2.11.1,選擇JDK版本后確認。

063C]RYBWUU[4N3R08BD6SF

工程創建成功后的目錄

7MAKRFV(($)T`G~NECWXH}T

 

編輯build.sbt文件,添加Spark依賴

name := "Scala"

version := "1.0"

scalaVersion := "2.11.1"

libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.0.2"

保存,等待下載完依賴的包。

 

PS: Scala版本對應的Spark可在官網查詢

W`~H5U]]ELBR}S{WBK8%ANP

 

Helloworld


在project下 src/scala包下創建一個scala.class

image

 

helloworld.scala

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

/**
  * Created by Jan on 2016/12/19.
  */
object Helloworld {

    def main(args: Array[String]) {
      val logFile = "./README.md"  // Should be some file on your server.
      val conf = new SparkConf().setAppName("Simple Application").setMaster("local")
      val sc = new SparkContext(conf)
      val logData = sc.textFile(logFile, 2).cache()
      val numAs = logData.filter(line => line.contains("h")).count()
      val numBs = logData.filter(line => line.contains("j")).count()
      println("Lines with h: %s, Lines with j: %s".format(numAs, numBs))
    }

}

上面代碼目的是:在本地讀取一個叫README.md的文件,通過Spark內存分析,計算字母“h”和字母“j”在文件中出現多少次。

 

運行代碼

image

 

可能出現的錯誤:

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

原因是缺少了winutils.exe文件,這個而且沒有設置HADOOP_HOME

 

解決辦法

1. 下載hadoop到本機並添加bin目錄到環境變量

http://hadoop.apache.org/releases.html

2. 網上搜下winutils.exe文件,下載后放到hadoop的bin目錄下

http://download.csdn.net/detail/u014313009/7671379


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM