Spark SQL(一):核心类、Spark Session APIs、Configuration、Input and Output

一.核心类

类名 概述
SparkSession(sparkContext[, jsparkSession]) 使用 Dataset 和 DataFrame API 对 Spark 进行编程的入口点
DataFrame(jdf, sql_ctx) 分组到命名列中的分布式数据集合
Column(jc) DataFrame 中的列
Row DataFrame 中的行
GroupedData(jgd, df) 由DataFrame. groupby()创建的一组用于在DataFrame上聚合的方法。
PandasCogroupedOps(gd1, gd2) 两个GroupedData的逻辑分组,由GroupedData.cogroup()创建。
DataFrameNaFunctions(df) 在DataFrame中处理丢失数据的功能。
DataFrameStatFunctions(df) 具有DataFrame的统计函数的功能。
Window 用于在 DataFrames 中定义窗口的实用函数。

二.Spark Session APIs

使用Dataset和DataFrame API编程Spark的入口点。要创建Spark会话,应使用SparkSession.builder属性。

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
# 详细spark创建如下:
# spark = SparkSession.builder \
#     .master("local") \
#     .appName("Word Count") \
#     .config("spark.some.config.option", "some-value") \
#     .getOrCreate()
方法 概述
SparkSession.builder.appName(name) 设置应用程序的名称,该名称将显示在Spark web UI中。如果未设置应用程序名称,将使用随机生成的名称。
SparkSession.builder.config([key, value, conf]) 设置配置选项。使用此方法设置的选项会自动传播到SparkConf和SparkSession自己的配置。
SparkSession.builder.enableHiveSupport() 启用 Hive 支持,包括与持久 Hive 元存储的连接、对 Hive SerDes 的支持和 Hive 用户定义的函数。
SparkSession.builder.getOrCreate() 获取一个现有的SparkSession,如果没有现有的SparkSession,则根据此构建器中设置的选项创建一个新的SparkSession。
SparkSession.builder.master(master) 设置要连接的 Spark 主 URL,例如“local”以在本地运行,“local[4]”以 4 个内核在本地运行,或“spark://master:7077”以在 Spark 独立集群上运行。
SparkSession.catalog 用户可以通过该接口创建、删除、更改或查询底层数据库、表、函数等。
SparkSession.conf Spark的运行时配置接口。这是用户可以获取和设置与 Spark SQL 相关的所有 Spark 和 Hadoop 配置的界面。获取配置的值时,默认为在基础中设置的值SparkContext(如果有)。
SparkSession.createDataFrame(data[, schema, …]) 从RDD、list或panda .DataFrame中创建一个DataFrame。
SparkSession.getActiveSession() 返回当前线程的活动SparkSession,由构建器返回
SparkSession.newSession() 返回一个新的SparkSession作为新会话,它有单独的SQLConf、注册的临时视图和udf,但是共享SparkContext和表缓存。
SparkSession.range(start[, end, step, …]) 使用单个pyspark.sql.types.LongType列创建一个名为id的DataFrame,包含从开始到结束(独占)范围内的元素,步骤值为step。
SparkSession.read 返回一个DataFrameReader,可用于将数据作为DataFrame读入。
SparkSession.readStream 返回一个DataStreamReader,可用于将数据流作为流式DataFrame读取。
SparkSession.sparkContext 返回底层的SparkContext。
SparkSession.sql(sqlQuery) 返回表示给定查询结果的DataFrame。
SparkSession.stop() 停止底层的SparkContext。
SparkSession.streams 返回一个StreamingQueryManager,它允许管理该上下文中活动的所有StreamingQuery实例。
SparkSession.table(tableName) 以DataFrame的形式返回指定的表。
SparkSession.udf 返回UDF注册的UDFRegistration。
SparkSession.version 运行此应用程序的Spark版本。

1.SparkSession.builder.config

(1)概述
其作用:设置配置选项。使用此方法设置的选项会自动传播到SparkConf和SparkSession自己的配置。

builder.config( key = None , value = None , conf = None ) 

参数:
key:str型(可选),配置属性的键名字符串
value:str型(可选),配置属性的值
conf :SparkConf(可选),一个实例SparkConf

(2)实例

from pyspark.sql import SparkSession
from pyspark.conf import SparkConf
# 对现有的SparkConf,使用conf参数
SparkSession.builder.config(conf=SparkConf())
# 对于(key,value)对,可以省略参数名称
SparkSession.builder.config("spark.some.config.option", "some-value")

2.SparkSession.builder.getOrCreate

(1)概述
其作用:获取一个现有的SparkSession,如果没有现有的SparkSession,则根据此构建器中设置的选项创建一个新的SparkSession。

builder.getOrCreate( )

该方法首先检查是否存在有效的全局默认 SparkSession,如果存在,则返回那个。如果不存在有效的全局默认 SparkSession,该方法会创建一个新的 SparkSession 并将新创建的 SparkSession 分配为全局默认值。
(2)实例

from pyspark.sql import SparkSession
s1 = SparkSession.builder.config("k1", "v1").getOrCreate()
s1.conf.get("k1") == "v1"

运行结果:
在这里插入图片描述
如果返回现有 SparkSession,则此构建器中指定的配置选项将应用于现有 SparkSession。

s2 = SparkSession.builder.config("k2", "v2").getOrCreate()
s1.conf.get("k1") == s2.conf.get("k1")

s1.conf.get("k2") == s2.conf.get("k2")

运行结果:
在这里插入图片描述
在这里插入图片描述

3.SparkSession.createDataFrame

(1)概述
其作用:从RDD、list或panda .DataFrame中创建一个DataFrame。

SparkSession.createDataFrame(data, schema=None, samplingRatio=None, verifySchema=True)

说明:
(1)从RDD,list或一个pandas.DataFrame,创建一个DataFrame。

(2)当schema是列名列表时,将从数据中推断出每个列的类型。

(3)当schema为None时,它将尝试从数据推断模式(列名和类型),数据应该是Row、namedtuple或dict的RDD。

(4)当schema为pyspark.sql.types.DataType或数据类型字符串时,它必须与实际数据匹配,否则将在运行时引发异常。如果给定的模式不是pyspark.sql.types。StructType,它将被包装成pyspark.sql.types.StructType作为它的唯一字段,并且字段名将是" value "。每个记录也将被包装到一个元组中,稍后可以将其转换为行。

(5)如果需要模式推断,则使用samplingRatio来确定用于模式推断的行比率。如果samplingRatio为None,将使用第一行。

参数
data:RDD or iterable
   任何类型的SQL数据表示(行,元组,int, boolean等),或列表,或pandas.DataFrame的RDD。
schema:pyspark.sql.types.DataType, str or list(可选)
     Pyspark.sql.types.DataType 或数据类型字符串或列名列表,默认为 None。数据类型字符串格式等于pyspark.sql.types.DataType。简单字符串,除了顶层结构类型可以省略struct<>和原子类型使用typeName()作为他们的格式,例如使用byte代替tinyint pyspark.sql.types.ByteType。我们还可以使用int作为pyspark.sql.types.IntegerType的简短名称。
samplingRatio:float(可选)
        用于推断的行的样本比率
verifySchema:bool(可选)
        根据模式验证每一行的数据类型。默认启用。

(2)实例

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
lst = [('YFater', 18)]
spark.createDataFrame(lst).collect()

运行结果:
在这里插入图片描述

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
lst = [('YFater', 18)]
spark.createDataFrame(lst,['name','age']).collect()

运行结果:
在这里插入图片描述

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
lst1 = [{
   'name':'YFater','age':18}]
spark.createDataFrame(lst1).collect()
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值