任何Spark程序都是SparkContext开始的,SparkContext的初始化需要一个SparkConf对象,SparkConf包含了Spark集群配置的各种参数。
初始化后,就可以使用SparkContext对象所包含的各种方法来创建和操作RDD和共享变量。
Scala:
val conf = new SparkConf().setMaster("master").setAppName("appName")
val sc = new SparkContext(conf)
或者
val sc = new SparkContext("master","appName")
 

通过创建SparkConf对象来配置应用,然后基于这个SparkConf创建一个SparkContext对象。驱动器程序通过SparkContext对象来访问Spark。

这个对象代表对计算集群的一个连接。一旦有了SparkContext, 就可以用它来创建RDD。

Java:

SparkConf conf = new SparkConf().setMaster("local").setAppName("My App");
JavaSparkContext sc = new JavaSparkContext(conf);

只需传递两个参数:
集群URL:告诉Spark如何连接到集群上。例子中使用local可以让Spark运行在单机单线程上而无需连接到集群。
应用名:例子中使用My App。当连接到一个集群时,这个值可以帮助我们在集群管理器的用户界面中找到应用。

在Spark2.0之前, SparkContext 是所有 Spark 功能的结构, 驱动器(driver) 通过SparkContext 连接到集群 (通过resource manager), 因为在2.0之前, RDD就是Spark的基础。

如果需要建立SparkContext,则需要SparkConf,通过Conf来配置SparkContext的内容。

在Spark2.0之后,Spark Session也是Spark 的一个入口, 为了引入dataframe和dataset的API, 同时保留了原来SparkContext的functionality,

如果想要使用 HIVE,SQL,Streaming的API, 就需要Spark Session作为入口。

SparkSession spark = SparkSession.builder().appName("demo_spark").enableHiveSupport().getOrCreate();

1)SparkSession.builder() 创建此方法用于构造SparkSession。

2)master(“local”) 设置要连接的master URL,例如:

“local”在本地运行
“local[4]”以4核在本地运行
“spark://master:7077”在spark独立集群上运行

3)appName( ) 设置将在spark Web UI中显示的应用程序的名称。如果未设置应用程序名称,则将使用随机生成的名称。

4)Config 设置使用此方法设置的配置选项会自动传递到'SparkConf'和'SparkSession'自己的配置,它的参数由键值对组成。

5)enableHiveSupport启用Hive支持,类似于HiveContext创建了sparkSession,我们可以用它来读取数据。

6)getOrCreate()方法表示有就拿过来,没有就创建,类似于单例模式。

使用SparkSession读取数据SparkSession是读取数据的入口点,类似于旧的SQLContext.read。以下代码使用SparkSession从CSV读取数据:

 val df = spark.read.format("com.databricks.spark.csv")                 
.schema(customSchema)                   
.load("data.csv")

  

从Spark 2.0.0开始,最好使用SparkSession,因为它提供了对sparkContext所具有的所有spark功能的访问。 此外,它还提供了用于处理DataFrame和DataSet的API

运行SQL查询SparkSession可用于对数据执行SQL查询,将结果作为Data-Frame(即数据集[ROW])返回。

众所周知,在以前的版本中,sparkcontext 是spark的入口点,因为RDD是主要的API,它是使用上下文API创建和操作的。 对于每个其他API,我们需要使用不同的context。

对于流式传输,我们需要streamingContext。 对于SQL sqlContext和hive hiveContext.,因为dataSet和DataFrame API正在成为新的独立API,我们需要为它们构建入口点。 因此在spark 2.0中,我们为DataSet和DataFrame API创建了一个新的入口点构建,称为Spark-Session。

 它是SQLContext,HiveContext和未来的streamingContext的组合。 在这些context中可用的所有API都可以在SparkSession上获得,SparkSession也有实际计算的spark context 。

SparkSession: SparkSession实质上是SQLContext和HiveContext的组合(未来可能还会加上StreamingContext),

所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。SparkSession内部封装了sparkContext,所以计算实际上是由sparkContext完成的。

Scala:

val sparkSession = SparkSession.builder
.master("master")
.appName("appName")
.getOrCreate()
或者
SparkSession.builder.config(conf=SparkConf())

  

I、 SparkSubmit 的 shell脚本

/data/spark/spark-2.2.0-bin-hadoop2.7/bin/spark-submit

--master spark://elcndc2sc39t:7077

--class com.enc.analysis.core.AlgorithmExecute

/data/upload/analysis/analysisFrame-1.1.0.jar $1 $2

-----------------------------------------------------------------

--master表示master路径,

--class表示入口的类的全路径

/data/upload/analysis/analysisFrame-1.1.0.jar 表示计算框架jar包的全路径

$1,$2..是自定义的shell命令进行传参,传递的参数会在入口类的main方法的String[] args中

II、 利用Spark读取jdbc

Properties connectionProperties = new Properties();

String url = "jdbc:mysql://" + "mysql服务器地址" + ":" + "mysql端口" + "/" + "数据库名?useUnicode=true&characterEncoding=utf-8";

String driver = "com.mysql.jdbc.Driver";

connectionProperties.setProperty("user", "用户名");// 设置用户名

connectionProperties.setProperty("password", "密码");// 设置密码

connectionProperties.setProperty("driver", driver);

connectionProperties.setProperty("url",url);

SparkSession spark = SparkSessionUtils.getLocalSession();

Dataset<Row> dataset = spark.read().jdbc(connectionProperties.getProperty("url"),"表名",connectionProperties).persist();

dataset.show();

  

SparkConf和SparkContext的更多相关文章

  1. 【Spark】session 代替 SparkConf、SparkContext和SQLContext

    http://www.raincent.com/content-85-7196-1.html

  2. SparkContext源码阅读

    SparkContext是spark的入口,通过它来连接集群.创建RDD.广播变量等等. class SparkContext(config: SparkConf) extends Logging w ...

  3. [Apache Spark源代码阅读]天堂之门——SparkContext解析

    略微了解Spark源代码的人应该都知道SparkContext,作为整个Project的程序入口,其重要性不言而喻,很多大牛也在源代码分析的文章中对其做了非常多相关的深入分析和解读.这里,结合自己前段 ...

  4. spark[源码]-sparkContext概述

    SparkContext概述 sparkContext是所有的spark应用程序的发动机引擎,就是说你想要运行spark程序就必须创建一个,不然就没的玩了.sparkContext负责初始化很多东西, ...

  5. 【Spark】SparkContext源代码解读

    SparkContext的初始化 SparkContext是应用启动时创建的Spark上下文对象,是进行Spark应用开发的主要接口,是Spark上层应用与底层实现的中转站(SparkContext负 ...

  6. 5 pyspark学习---Broadcast&Accumulator&sparkConf

    1 对于并行处理,Apache Spark使用共享变量.当驱动程序将任务发送给集群上的执行者时,集群中的每个节点上都有一个共享变量的副本,这样就可以用于执行任务了. 2 两种支持得类型 (1)Broa ...

  7. Spark源码(1): SparkConf

    1. 简介 SparkConf类负责管理Spark的所有配置项.在我们使用Spark的过程中,经常需要灵活配置各种参数,来使程序更好.更快地运行,因此也必然要与SparkConf类频繁打交道.了解它的 ...

  8. spark示例

    1)java(App.java) package com.ejiajie.bi.hello; import org.apache.spark.api.java.JavaSparkContext; im ...

  9. Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境,我们已经部署好了一个Spark的开发环境. 本文的目标是写一个Spark应用,并可以在集群中测试. ...

随机推荐

  1. py 并发编程(线程、进程、协程)

    一.操作系统 操作系统是一个用来协调.管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间. 程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等.操作系统的内核的定义:操 ...

  2. unittest管理测试用例

    #coding=utf-8 from selenium import webdriver from time import sleep import unittest #导入unittest库 imp ...

  3. 【DRF框架】restfull规范

    零:核心思想: 1.面对资源编程 2.根据HTTP请求方式的不同对资源进行不同的操作 一.协议 API与用户的通信协议,总是使用HTTPs协议. 二.域名 应该尽量将API部署在专用域名之下. htt ...

  4. charles 手机抓包设置

    本文参考:charles 抓包手机 charles经常会进行手机上的网页抓包,比如去copy别人网站图片或脚本的时候o(∩_∩)o : 手机抓包的原理,和PC类似,手机依靠charles与服务端进行对 ...

  5. MySQL进阶14--标识列(自增序列/auto_increment)--设置/展示步长--设置/删除标示列

    /*进阶14 标识列 又称为自增序列; 含义 : 可以不用手动的插入值, 系统提供默认的序列值(1-->n) 特点 : 1.标识列必须和主键搭配? 不一定,但要求是一个key 2.一个表可以有几 ...

  6. MySql 数据库 SQLException: The user specified as a definer ('root'@'%') does not exist 错误原因及解决办法

    The user specified as a definer ('root'@'%') does not exist 此种报错主要是针对访问视图文件引起的(没有权限) 经查明:是用户root并没有获 ...

  7. Git报错:Your branch is up to date with 'origin/master'.

    Git在提交的时候报错 Your branch is up to date with 'origin/master'. 报错 Your branch is up to date with 'origi ...

  8. xcode 查看stastic

    点GPU 双击柱状图 从上面list里点performance

  9. MongoDB 4.0 事务实现解析

    MongoDB 4.0 引入的事务功能,支持多文档ACID特性,例如使用 mongo shell 进行事务操作 > s = db.getMongo().startSession() sessio ...

  10. springboot与jdk1.6结合使用需要注意的地方

    问题描述:官方文档,默认Spring boot 1.3.5 要求 Java7版本,而当前项目要求 Java6,而且在idea工具中创建项目时,如果采用选项“Spring Initializr”来创建工 ...