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的主要内容,如果未能解决你的问题,请参考以下文章