Module Context
Spark SQL 和DF重要的类
类名 | 说明 |
---|---|
SparkSession | DF以及SQL的入口 |
DataFrame | 分布式数据集 |
Column | DF的一列 |
Row | DF的一行 |
GroupedData | df.groupBy()的一些操作方法 |
DataFrameNafunction | 处理缺失数据的方法 |
DataFrameStatFunctions | 统计功能的一些方法 |
functions | df 的一些内置方法 |
types | 数据类型的列表 |
Window | 窗口函数的方法 |
SparkSession
其为用户提供了一个统一的切入点来使用Spark的各项功能,并且允许用户通过它调用DataFrame和Dataset相关API来编写Spark程序。
##创建一个SparkSession
spark=SparkSession.builder\
.master('spark://master:7077')\
.appName("just-test")\
.config("spark.executor.memory", '4g') \
.getOrCreate()
说明
builder来创建一个SparkSession实例
-
appName 应用程序的名字
-
config(key=None, value=None, conf=None) 配置相关
对于已经存在的SparkConf 可以用conf 参数
SparkSession.builder.config(conf=SparkConf())
对key,value
SparkSession.builder.config(“spark.some.config.option”, “some-value”) -
enableHiveSupport()
支持Hive(暂时没有用过) -
getOrCreate()
有就获取没有就创建 -
master(master) a url for spark master
catalog
Conf
range(start, end=None, step=1, numPartitions=None)
创建一个类型为types.LongType , 列名为id,有步长step,左闭右kai的DF
read
返回一个 DataFrameReader
readstream
sparkContext
返回一些潜在的sparkContext信息
SparkContext
Spark UI
Version
v2.4.0
Master
spark://master:7077
AppName
just-tes
sql(sqlQuery)
df.createOrReplaceTempView("table")
res=spark.sql("select count(*) from table")
res.show()
±-------+
|count(1)|
±-------+
| 6120|
±-------+
stop()
停止spark session
spark.stop()
streams
table(tableName)
把table转为DF
df.createOrReplaceTempView("table1")
df2 = spark.table("table1")
sorted(df.collect()) == sorted(df2.collect()) #True
udf
Returns a UDFRegistration for UDF registration.
version
spark.version
>> '2.4.0'
createDataFrame
createdataFrame(data, schema=None, samplingRatio=None, verifySchema=True)
创建df
l=[("Alice",1),("Tom",12)]
spark.createDataFrame(l).show()
+-----+---+
| _1| _2|
+-----+---+
|Alice| 1|
| Tom| 12|
+-----+---+
In [41]:
d=[{"name":"Alice","age":1},{"name":"Tom","age":12}]
spark.createDataFrame(d).show()
+---+-----+
|age| name|
+---+-----+
| 1|Alice|
| 12| Tom|
+---+-----+
In [30]:
from pyspark.sql.types import *
schema=StructType([
StructField("name",StringType(),True),
StructField("age",IntegerType(),True)
])
spark.createDataFrame(l,schema).show()
+-----+---+
| name|age|
+-----+---+
|Alice| 1|
| Tom| 12|
+-----+---+