SparkContextSparkConf以及进化版的SparkSession

Posted 詩和遠方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SparkContextSparkConf以及进化版的SparkSession相关的知识,希望对你有一定的参考价值。

Spark 2.0之前

需要显式地创建SparkConf实例,并用Conf实例初始化SparkContext,再用SparkContext创建SQLContext。
多数相关配置都在SparkConf中用set函数设置。

from pyspark import SparkContext,SparkConf
from pyspark.sql import SQLContext

# 各类配置
configure = SparkConf().setAppName("name").setMaster("local[*]")\\
     .set("spark.executor.cores", 1)\\
     .set("spark.sql.parquet.compression.codec", "snappy")

# 用以上配置创建一个 SparkContext、sqlContext
sc = SparkContext(conf = configure)
sqlContext = SQLContext(sc)
sc

# SQLContext用来执行 DataFrame 相关操作
df_test = sqlContext.read.format('csv')\\
    .option('header', 'true')\\
    .option('inferSchema', 'true')\\
    .load('/home/ghost/workdata/patients.csv')
df_test.printSchema()
root
 |-- patient_id: integer (nullable = true)
 |-- assigned_sex: string (nullable = true)
 |-- given_name: string (nullable = true)
 |-- surname: string (nullable = true)
 |-- address: string (nullable = true)
 |-- city: string (nullable = true)
 |-- state: string (nullable = true)
 |-- zip_code: integer (nullable = true)
 |-- country: string (nullable = true)
 |-- contact: string (nullable = true)
 |-- birthdate: string (nullable = true)
 |-- weight: double (nullable = true)
 |-- height: integer (nullable = true)
 |-- bmi: double (nullable = true)

Spark 2.0开始

SparkSession将SparkContext、SparkConf、SQLContext进行封装。
下面的config函数,相当于执行了SparkConf的set方法,而之后可以通过SparkSession完成各类操作。

import pyspark
from pyspark.sql import SparkSession

spark = SparkSession.builder\\
        .master("local[*]")\\
        .appName("Test Spark")\\
        .config("spark.executor.cores", 2) \\
        .config("spark.sql.parquet.compression.codec", "snappy")\\
        .getOrCreate()
spark

# 用 SparkSesson 实例读取 CSV 
df_test = spark.read.format('csv')\\
    .option('header', 'true')\\
    .option('inferSchema', 'true')\\
    .load('/home/ghost/workdata/patients.csv')
# 显示前4列前5行
df_test.select(df_test.columns[0:4]).show(5)
+----------+------------+----------+-------+
|patient_id|assigned_sex|given_name|surname|
+----------+------------+----------+-------+
|         1|      female|       Zoe|Wellish|
|         2|      female|    Pamela|   Hill|
|         3|        male|       Jae| Debord|
|         4|        male|      Liêm|   Phan|
|         5|        male|       Tim|Neudorf|
+----------+------------+----------+-------+
only showing top 5 rows

总结

  • SparkContext相当于一个大的实例(一个JVM只能有一个SparkContext)
  • 每个SparkContext可以创建多个SparkSession会话
  • 每个会话有自己的参数配置(SparkConf)

以上是关于SparkContextSparkConf以及进化版的SparkSession的主要内容,如果未能解决你的问题,请参考以下文章

分子进化树构建及数据分析方法介绍

分子进化树构建及数据分析方法介绍【转】

线上圆桌整理 - 腾讯会议进化中的视频会议

分子进化与系统发育

计算智能基础理论与方法之进化规则浅谈

Java Swing的进化