当前位置: 首页 > article >正文

PySpark学习笔记5-SparkSQL

在这里插入图片描述
在这里插入图片描述
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.kler.cn/a/533783.html

相关文章:

  • 除了网页,还有哪些方式可以访问deepseek r1
  • 信标链的基本概念
  • SynchronousQueue 与 LinkedBlockingQueue区别及应用场景
  • STM32单片机学习记录(2.2)
  • 洛谷P11655「FAOI-R5」Lovely 139
  • 【PDF提取局部内容改名】批量获取PDF局部文字内容改名 基于QT和百度云api的完整实现方案
  • 在游戏本(6G显存)上本地部署Deepseek,运行一个14B大语言模型,并使用API访问
  • 记录debian12运行时出现卡死的问题
  • http状态码:请说说 503 Service Unavailable(服务不可用)的原因以及排查问题的思路
  • Windows Docker笔记-简介摘录
  • Java synchronized锁升级
  • 算法与数据结构(括号匹配问题)
  • w192中国陕西民俗网的设计与实现
  • 从BIO到NIO:Java IO的进化之路
  • deepseekLLM发展历程
  • ElasticSearch学习笔记-解析JSON格式的内容
  • 硬件工程师笔试基础题目
  • 数字化转型:概念性名词浅谈(第四讲)
  • DS图(下)(19)
  • 【算法】经典博弈论问题③——斐波那契博弈 + Zeckendorf 定理 python
  • 基于YUV的色相调节(一)
  • Leetcode 78. 子集(全排列的变形)
  • Gauss高斯:分布键
  • DeepSeek各版本说明与优缺点分析
  • 留学生编程辅导Haskell/OCaml/Prolog/Rust/Python
  • Linux du 命令详解:查看磁盘使用情况与高级用法 (中英双语)查看某个用户磁盘占用