PySpark学习笔记5-SparkSQL

embedded/2025/2/11 20:11:57/

在这里插入图片描述
在这里插入图片描述
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/embedded/161411.html

相关文章

高级系统架构师--第二章:软件工程

文章目录 2.1 开发模型瀑布模型原型模型V模型迭代与增量模型螺旋模型基本原理开发过程特点适用场景 基于构件的开发模型&#xff08;CBSD&#xff09;基于构件的软件工程&#xff08;CBSE&#xff09;快速应用开发&#xff08;RAD&#xff09;基本概念 统一过程&#xff08;UP/…

static在C++中的用法

类只产生一个对象。把构造函数放到private区域。这样外界就无法创建对象。 模板会造成代码的膨胀

TCP长连接、HTTP短轮询、HTTP长轮询、HTTP长连接、WebSocket的区别

1.TCP长连接 &#xff08;1&#xff09;概念&#xff1a;该连接属于传输层的协议。客户端和服务器之间建立连接后&#xff0c;不立即断开该连接&#xff0c;而是一直保持这个状态&#xff0c;以便后续数据的持续、连续传输。&#xff08;2&#xff09;应用场景&#xff1a;适合…

数字滤波器的分类

数字滤波器可以根据不同的标准进行分类&#xff0c;以下是几种常见的分类方式&#xff1a; 1. 按实现结构分类 FIR滤波器&#xff08;有限脉冲响应滤波器&#xff09; - 特点&#xff1a;系统的脉冲响应在有限时间内衰减到零。 - 优点&#xff1a;线性相位特性&#xff08;保…

Mysql优化的查询语句(1)

SQL 查询优化是一个系统性工程&#xff0c;除了你提到的几点&#xff0c;我再补充一些优化建议&#xff0c;帮助提升数据库查询效率&#xff1a; 1. 避免 SELECT *&#xff0c;只查询需要的字段 问题&#xff1a; SELECT * FROM users WHERE id 100;SELECT * 会获取表中所有…

P3654 First Step (ファーストステップ)(贪心算法)

#include<bits/stdc.h> using namespace std;int main() {int r,c,k;cin>>r>>c>>k;char a[105][105];int ans0;for(int i0;i<r;i){for(int j0;j<c;j){cin>>a[i][j];}}for(int i0;i<r;i){int cnt0; // 用来记录连续空地的数量for(int j…

5分钟搭建企业级AI问答知识库

5分钟搭建企业级AI问答知识库 基础概念部署过程使用体验 基础概念 在开始搭建企业级AI问答知识库之前&#xff0c;先来了解一下今天操作过程中用到的三个概念&#xff1a; 概念一&#xff1a;模型在线服务PAI-EAS&#xff08;Elastic Algorithm Service&#xff09;是模型在线…

计算机毕业设计hadoop++hive微博舆情预测 微博舆情分析 微博推荐系统 微博预警系统 微博数据分析可视化大屏 微博情感分析 微博爬虫 知识图谱

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…