PySpark学习笔记5-SparkSQL

news/2025/2/10 21:51:04/

在这里插入图片描述
在这里插入图片描述
sparkSql的数据抽象有两种。
一类是data set适用于java和Scala
一类是data frame适用于java,Scala,python

将r d d转换为data frame

#方式一
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风格

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风格

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

词频统计案例

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

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干活


http://www.ppmy.cn/news/1570971.html

相关文章

鸿蒙生态潮起:开发者的逐浪之旅

鸿蒙生态潮起&#xff1a;开发者的逐浪之旅 在全球科技的澎湃浪潮中&#xff0c;鸿蒙生态宛如一座正在崛起的新大陆&#xff0c;熠熠生辉&#xff0c;吸引着无数开发者扬帆起航&#xff0c;探寻其中蕴藏的无限机遇&#xff0c;也直面诸多挑战。 鸿蒙生态的机遇&#xff0c;首先…

uniapp mqttjs 小程序开发

在UniApp中集成MQTT.js开发微信小程序时&#xff0c;需注意平台差异、协议兼容性及消息处理等问题。以下是关键步骤与注意事项的综合指南&#xff1a; 一、环境配置与依赖安装 安装MQTT.js 推荐使用兼容性较好的版本&#xff1a;mqtt4.1.0&#xff08;H5和小程序兼容性最佳&…

【仿12306项目】通过纯前端+Kaptcha后端验证码,削弱瞬时高峰并防机器人刷票

文章目录 一. 场景简介二. 通过kaptcha实现后端验证码功能1. 引入依赖2. 增加配置类3. 增加后端接口类 三. 纯前端验证码代码示例 四. 效果演示 一. 场景简介 仿12306项目中&#xff0c;在高并发抢票时&#xff0c;可以利用验证码功能&#xff0c;削弱瞬时的请求高峰。但如果仅…

使用 Ollama 在 Windows 环境部署 DeepSeek 大模型实战指南

文章目录 前言Ollama核心特性 实战步骤安装 Ollama验证安装结果部署 DeepSeek 模型拉取模型启动模型 交互体验命令行对话调用 REST API 总结个人简介 前言 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;的应用逐渐成为技术热点&#xff0c;而 DeepSeek 作为国产开…

【golang学习之旅】Go 语言并发编程(goroutine、channel 的使用)

文章目录 前言1. 为什么要学习 Go 语言并发编程&#xff1f;2. Goroutine&#xff08;协程&#xff09;详解2.1 什么是Goroutine&#xff1f;2.2 如何启动Goroutine&#xff1f;2.3 多个Goroutine并发执行 3. Channel&#xff08;通道&#xff09;详解3.1 什么是Channel&#x…

如何写出优秀的单元测试?

写出优秀的单元测试需要考虑以下几个方面&#xff1a; 1. 测试用例设计 测试用例应该覆盖被测试代码的不同场景和边界情况&#xff0c;以尽可能发现潜在的问题。在设计测试用例时需要关注以下几点&#xff1a; 输入输出数据&#xff1a;要测试的函数或方法可能有多个输入参数…

c/c++蓝桥杯经典编程题100道(16)链表反转

链表反转 c/c蓝桥杯经典编程题100道-目录-CSDN博客 目录 链表反转 一、题型解释 二、例题问题描述 三、C语言实现 解法1&#xff1a;迭代反转&#xff08;难度★&#xff09; 解法2&#xff1a;递归反转&#xff08;难度★★&#xff09; 解法3&#xff1a;分组反转&am…

基于STM32的智能鱼缸水质净化系统设计

&#x1f91e;&#x1f91e;大家好&#xff0c;这里是5132单片机毕设设计项目分享&#xff0c;今天给大家分享的是智能鱼缸水质净化系统。 目录 1、设计要求 2、系统功能 3、演示视频和实物 4、系统设计框图 5、软件设计流程图 6、原理图 7、主程序 8、总结 1、设计要求…