Spark之SparkSession

  最近学习SparkSql时接触了SparkSession。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

  我们可以使用builder模式来创建SparkSession。如果SparkContext已经存在,SparkSession就会重用它;如果不存在,Spark就会创建一个新的SparkContext。在每一个JVM中只能有一个SparkContext,但是在一个Spark程序中可以有多个SparkSession。

SparkSession spark = SparkSession.builder()
    .master("yourmaster")
    .appName("UnderstandingSparkSession")
    .config("spark.some.config.option", "config-value")
    .getOrCreate();

  当然你也可以通过SparkSession来创建SparkContext。

JavaSparkContext sc = new JavaSparkContext(spark.sparkContext());

SparkSession操作

  关于SparkSession的操作可以查看官方文档。

参考资料:

http://blog.madhukaraphatak.com/introduction-to-spark-two-part-1/
https://docs.cloud.databricks.com/docs/latest/sample_applications/04%20Apache%20Spark%202.0%20Examples/01%20SparkSession.html
https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-sql-sparksession.html
http://stackoverflow.com/questions/40153728/multiple-sparksessions-in-single-jvm
https://databricks.com/blog/2016/08/15/how-to-use-sparksession-in-apache-spark-2-0.html

你可能感兴趣的:(spark)