PySpark学习笔记5-SparkSQL


sparkSql的数据抽象有两种。

一类是data set适用于java和Scala

一类是data frame适用于java,Scala,python

将r d d转换为data frame

python 复制代码
#方式一
df = spark.createDataFrame(rdd,schema=['name','age'])
#方式二
schema = Structtype().
add('id',integertype(),nullable=False).
add('name',StringType(),nullable=True)
df = spark.createDataFrame(rdd, schema)
#方式三
df = rdd.toDF(['id','name'])
df = rdd.toDF(schema)

DSL风格

python 复制代码
show()方法,默认展示二十行
printSchema()方法,展示d f的信息
展示制定列
df.select('id','name').show()
df.select(['id','name']).show()
df.select(df['id'],df['name']).show()
过滤数据
df.filter('score<90').show()
df.filter(df['score']<99).show()
df.where('score < 99').show()
df.where(df['score']<99).show()
分组展示
df.groupBy('subject').count().show()
df.groupBy(df['subject']).count().show()

SQL风格

python 复制代码
注册成表
df.createTempView('score')临时表
df.createOrReplaceTempView('score')注册临时表存在就替换
df.createGlobalTempView('score')注册一个全局表
注册好临时表之后可以执行s q l查询
df2 = spark.sql("""select * from score where score < 99""")
df2.show()

词频统计案例

python 复制代码
sql风格处理
rdd = sc.textFile('./a.txt').flatMap(lmda x: x.split('')).map(lambda x:[x])
df = rdd.toDF(['word'])
df.createTempView('words')
spark.sql("""select word,count(*) as cnt from words group by word order by cnt desc""").show()
dsl风格处理
df = spark.read.format('text').load('./a.txt')
df2 = df.withColumn('value',F.explode(F.split(df['value'],'')))
df2.groupBy('value').count().withColumnRenamed('count','cnt').orderBy('cnt',ascending=False).show()

数据清洗API

python 复制代码
df.dropDuplicates().show()
去除重复值
df.dropDuplicates(['age','job']).show()
按照列名去除重复值
df.dropna().show()
如果有缺失值删除此行
df.dropna(thresh=3).show()
有效列最少三个才能保存此行
df.dropna(thresh=2,subset=['name','age']).shwo()
针对这两个列必须有效列为两个才能保留数据
df.fillna({'name':'位置姓名','age':'1','job':'worker'}).show()
对制定列用指定值进行缺失值填充

RDD运行流程:代码-- DAG调度器逻辑任务-- Task调度器任务分配和管理监控-- worker干活

相关推荐
星幻元宇VR7 分钟前
VR安全带防坠落体验平台|强化高空作业安全教育的新途径
科技·学习·安全·生活·vr
weixin_4410036410 分钟前
廖华英《中国文化概况》修订版+批注版+译文版+笔记+课件PPT+配套题库 PDF
笔记·pdf·中国文化概况
如果你想拥有什么先让自己配得上拥有17 分钟前
「理性认知」和「本能恐惧」在打架
学习·总结
Cathy Bryant22 分钟前
聊聊拓扑学
笔记·算法·数学建模·拓扑学·高等数学
The森26 分钟前
macOS 26(M芯片)部署 cocos2d-x(C++)全链路指南——Xcode + Rosetta
c++·经验分享·笔记·macos·xcode·cocos2d
li星野29 分钟前
学习记录:大数据常用工具技术深度解析
大数据·学习
天天爱吃肉821842 分钟前
【 电机热网络温度预测模型学习笔记】
笔记·功能测试·嵌入式硬件·学习·机器学习·信息可视化·汽车
浮白载笔的夜晚44 分钟前
【Virtuoso】PVT工艺角配置问题
学习·模拟·virtuoso
li星野1 小时前
ACA大数据学习记录1
学习
oi..1 小时前
Flag和JavaScript document有关
开发语言·前端·javascript·经验分享·笔记·安全·网络安全