1. 程式人生 > >IntelliJ Idea開發spark程式及執行

IntelliJ Idea開發spark程式及執行

版本:spark-1.6.0,IntelliJ Idea15

1.建立一個SBT專案

2.編寫簡單程式碼

package com.james.scala
/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SimpleApp {
  def main(args: Array[String]) {
    //預設HDFS,本地讀取需要加:file://
    val logFile = "file:///usr/local/spark/README.md"
// Should be some file on your system val conf = new SparkConf().setAppName("Simple Application") val sc = new SparkContext(conf) val logData = sc.textFile(logFile, 2).cache() val numAs = logData.filter(line => line.contains("a")).count() val numBs = logData.filter(line => line.contains
("b")).count() println("Lines with a: %s, Lines with b: %s".format(numAs, numBs)) } }

3.打包

sbt compile

sbt package

4.執行

4.1 windows本地執行:

在Run/Debug Configurations的VM options新增引數:

 -Dspark.master=local

這裡寫圖片描述

4.2 或提交spark叢集執行

bin/spark-submit --master spark://c1:7077 --class com.james
.scala.SimpleApp --executor-memory 2g /usr/local/app/mySbt.jar 1000

附錄:

spark-submit各項引數詳解:

Options:
–master MASTER_URL spark://host:port, mesos://host:port, yarn, or local.
–deploy-mode DEPLOY_MODE driver執行之處,client執行在本機,cluster執行在叢集
–class CLASS_NAME 應用程式包的要執行的class
–name NAME 應用程式名稱
–jars JARS 用逗號隔開的driver本地jar包列表以及executor類路徑
–py-files PY_FILES 用逗號隔開的放置在Python應用程式PYTHONPATH上的.zip, .egg, .py檔案列表
–files FILES 用逗號隔開的要放置在每個executor工作目錄的檔案列表
–properties-file FILE 設定應用程式屬性的檔案放置位置,預設是conf/spark-defaults.conf
–driver-memory MEM driver記憶體大小,預設512M
–driver-java-options driver的java選項
–driver-library-path driver的庫路徑Extra library path entries to pass to the driver
–driver-class-path driver的類路徑,用–jars 新增的jar包會自動包含在類路徑裡
–executor-memory MEM executor記憶體大小,預設1G

Spark standalone with cluster deploy mode only:
–driver-cores NUM driver使用核心數,預設為1
–supervise 如果設定了該引數,driver失敗是會重啟

Spark standalone and Mesos only:
–total-executor-cores NUM executor使用的總核數

Master URL 含義:

local 使用1個worker執行緒在本地執行Spark應用程式
local[K] 使用K個worker執行緒在本地執行Spark應用程式
local

使用所有剩餘worker執行緒在本地執行Spark應用程式
spark://HOST:PORT 連線到Spark Standalone叢集,以便在該叢集上執行Spark應用程式
mesos://HOST:PORT 連線到Mesos叢集,以便在該叢集上執行Spark應用程式
yarn-client 以client方式連線到YARN叢集,叢集的定位由環境變數HADOOP_CONF_DIR定義,該方式driver在client執行。
yarn-cluster 以cluster方式連線到YARN叢集,叢集的定位由環境變數HADOOP_CONF_DIR定義,該方式driver也在叢集中執行。