【Spark】SparkSession与SparkContext(详解)

文章开始先让我们看一张图
在这里插入图片描述

从图中我们可以大概看出SparkSession与SparkContext的关系了

SparkSession是Spark 2.0引如的新概念。SparkSession为用户提供了统一的切入点,来让用户学习spark的各项功能。
 在spark的早期版本中,SparkContext是spark的主要切入点,由于RDD是主要的API,我们通过sparkcontext来创建和操作RDD。对于每个其他的API,我们需要使用不同的context。例如,对于Streming,我们需要使用StreamingContext;对于sql,使用sqlContext;对于Hive,使用hiveContext。但是随着DataSet和DataFrame的API逐渐成为标准的API,就需要为他们建立接入点。所以在spark2.0中,引入SparkSession作为DataSet和DataFrame API的切入点,SparkSession封装了SparkConf、SparkContext和SQLContext。为了向后兼容,SQLContext和HiveContext也被保存下来。
 SparkSession实质上是SQLContext和HiveContext的组合(未来可能还会加上StreamingContext),所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。SparkSession内部封装了sparkContext,所以计算实际上是由sparkContext完成的。

Java创建一个SparkContext对象进行word count

-- 导入maven jar包
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.3.4</version>
</dependency>

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

/**
 * @Author: Stephen
 * @Date: 2020/1/2 12:24
 * @Content:
 */
object MyRun {
  def main(args: Array[String]): Unit = {
    // 读取Spark Application 的配置信息
    val conf = new SparkConf().setMaster("local[2]").setAppName("app")
    val sc = SparkContext.getOrCreate(conf)
    val rdd = sc.textFile("hdfs://192.168.56.122:9000/wc/e.txt")
    rdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
  }
}

// 打包运行
[root@hw1 bin]# ./spark-submit 
    --class com.njbaqn.MyRun  
        /opt/soft/myjar/mysp.jar

创建一个SparkSession对象

  //在spark 2.x中不推荐使用sparkContext对象读取数据,而是推荐SparkSession
    val spark = SparkSession.builder
      .appName("Simple Application")
      .master("local[2]")
      .getOrCreate()

Shell 操作 SparkContext 进行word count

// 读取 hdfs 文件
scala> val rdd = sc.textFile("hdfs://192.168.56.122:9000/wc/e.txt")
// 读取本机文件
scala> val rdd = sc.textFile("///opt/data/e.txt")
// 统计个数
scala> rdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
发布了94 篇原创文章 · 获赞 110 · 访问量 5057

猜你喜欢

转载自blog.csdn.net/beautiful_huang/article/details/103820534
今日推荐