Spark3_SparkContext

SparkContext

1.简介

1.1.tells Spark how to access a cluster (告诉Spark如何去连接集群)

开发过程中使用的运行模式包括local statdalone yarn mesos,设置完之后,spark就知道job作业运行在什么模式之上.

1.2.create a SparkConf(key-value pairs)

SparkConf包含了Application应用信息:

val conf = new SparkConf().setAppName(appName).setMaster(master)
new SparkContext(conf)

setMaster:

In practice, when running on a cluster, you will not want to hardcode master in the program, but rather launch the application with spark-submit and receive it there.

当我们把spark运行在集群上时,不要讲master设置成硬编码模式,简单来说就是不要在代码中写死setMaster,而是使用spark-submit来提交,在本地开发的时候可以硬编码setMaster,但是最好也是设置成参数配置.

2.使用IDEA构建Spark应用程序

创建mvn管理的scala-simple项目就不多做赘述了

2.1添加pom文件依赖

  <dependencies>
    <dependency>
      <groupId>org.scala-langgroupId>
      <artifactId>scala-libraryartifactId>
      <version>${scala.version}version>
    dependency>
      

  	<dependency>
      <groupId>org.apache.sparkgroupId>
      <artifactId>spark-core_2.11artifactId>
      <version>2.2.1version>
    dependency>
  dependencies>

2.2SparkContext创建

package com.ruozedata.spark

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

object SparkContextApp {

  def main (args: Array[String]): Unit = {

    val sparkConf = new SparkConf().setAppName("SparkContextApp").setMaster("local[2]")
    val sc = new SparkContext(sparkConf)  
    sc.stop()
  }
}

3.spark-shell的使用

3.1 spark-shell --help参数

1.–mater:指定运行模式

2.–name:指定应用程序的名字

3.–jars:逗号分隔的本地jar包的指定

4.–conf:指定配置参数

5.–driver-****:drive的一系列参数

6.–executor-memory:指定executor端的内存

7.–executor-cores:指定executor端的cores

8.–driver-cores:指定driver端的cores

9.–queue:指定分配队列

10.–num-executors:设置执行端的个数

3.2spark-shell启动详解

Spark context available as ‘sc’ (master = local[2], app id = local-1557126095413).
Spark session available as ‘spark’.

启动之后自动创建了sparkcontext,别名叫sc,app-id是local-1557126095413,但是我们在webUI页面发现我们虽然没有指定运行的Appname,但是启动脚本中有默认的Appname

spark-shell --master local[2]
#在spark-shell的启动脚本中可以找到默认的设置,其底层也是调用spark-submit进行作业的提交的
function main() {
  if $cygwin; then
    # Workaround for issue involving JLine and Cygwin
    # (see http://sourceforge.net/p/jline/bugs/40/).
    # If you're using the Mintty terminal emulator in Cygwin, may need to set the
    # "Backspace sends ^H" setting in "Keys" section of the Mintty options
    # (see https://github.com/sbt/sbt/issues/562).
    stty -icanon min 1 -echo > /dev/null 2>&1
    export SPARK_SUBMIT_OPTS="$SPARK_SUBMIT_OPTS -Djline.terminal=unix"
    "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@"
    stty icanon echo > /dev/null 2>&1
  else
    export SPARK_SUBMIT_OPTS
    "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@"
  fi
}

local模式:local开头,后面跟的是当前时间的时间戳
yarn模式:Application开头

java.io.tmpdir:操作系统缓存的临时目录

3.3 Classpath Entries

主要是下面两个路径下的jar包

$SPARK_HOME/conf/*

$SPARK_HOME/jars/*.jar

3.4小结

通过spark-shell的脚本,我们可以发现Spark-Shell的由来,底层也是调用spark-submit来进行提交的

tips:脚本最后的"$@"表示所有参数的列表

你可能感兴趣的:(hadoop,Spark)