Spark SQL中的RDD与DataFrame转换实例用法
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"Spark SQL中的RDD与DataFrame转换实例用法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Spark SQL中的R
千家信息网最后更新 2026年11月01日Spark SQL中的RDD与DataFrame转换实例用法
这篇文章主要讲解了"Spark SQL中的RDD与DataFrame转换实例用法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Spark SQL中的RDD与DataFrame转换实例用法"吧!
一.第一种方式RDD转化为DataFrame
1.官网
2.解释
反射把schema信息全部定义在case class 类里面
3.代码
package coreimport org.apache.spark.sql.SparkSessionimport org.apache.spark.sql.types.StructTypeobject Test { def main(args: Array[String]): Unit = { val spark = SparkSession.builder() .appName("Test") .master("local[2]") .getOrCreate() val mess = spark.sparkContext.textFile("file:///D:\\test\\person.txt") import spark.implicits._ val result = mess.map(_.split(",")).map(x => Info(x(0).toInt,x(1),x(2).toInt)).toDF() // result.map(x => x(0)).show() //在1.x 版本是可以的 在2.x不可以需要价格rdd result.rdd.map(x => x(0)).collect().foreach(println) result.rdd.map(x => x.getAs[Int]("id")).collect().foreach(println) }}case class Info(id:Int,name:String,age:Int)4.注意事项
注意2.2版本以前 类的构造方法参数有限在2.2后没有限制了
二.第二种转换方式
1.官网
2.解释
制定scheme信息 就是编程的方式 作用到Row 上面
3.步骤

4.步骤解释
从原有的RDD转化 ,类似于textFile一个StructType匹配Row里面的数据结构(几列),就是几个StructField 通过createDataFrame 把schema与RDD关联上
5.源码解释StructType
6.源码解释
StructField 可以理解为一列StructType 包含 1-n 个StructField
7.最终代码
package coreimport org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}import org.apache.spark.sql.{Row, SparkSession}object TestRDD2 { def main(args: Array[String]): Unit = { val spark = SparkSession.builder() .appName("TestRDD2") .master("local[2]") .getOrCreate() val mess = spark.sparkContext.textFile("file:///D:\\test\\person.txt") val result = mess.map(_.split(",")).map(x => Row(x(0).toInt, x(1), x(2).toInt)) //工作中这样写 val structType = new StructType( Array( StructField("id", IntegerType, true), StructField("name", StringType, true), StructField("age", IntegerType, true) ) ) val schema = StructType(structType) val info = spark.createDataFrame(result,schema) info.show() }}8.经典错误
9.原因解决
自己定义的schema信息与Row中的信息不匹配val result = mess.map(_.split(",")).map(x => Row(x(0), x(1), x(2)))//工作中这样写val structType = new StructType( Array( StructField("id", IntegerType, true), StructField("name", StringType, true), StructField("age", IntegerType, true) ))上面的是string 要的是int ,一定要注意因为会经常出错要转化类型val result = mess.map(_.split(",")).map(x => Row(x(0).toInt, x(1), x(2).toInt))三.方法的使用
1.spark-shell 有的方法在代码要自己隐士砖换
df.select('name).show 这个在spark-shell 可以或者df.select('name').show 但是代码里面不行,需要隐士转2.show源码
show源码 默认是true 显示小于等于20条,对应行中的字符是false就全部显示出来show(30,false) 也是全部显示出来不会截断show(5) 但是后面的多与20字符就不会显示你可以show(5,false)
3.select方法源码
4.select 方法调用走的位置
df.select("name").show(false)import spark.implicits._//这样不隐士转换不行df.select('name).show(false)df.select($"name")第一个select走的底层源码是 第一个源码图2,3个select走的源码是第二个5.head源码
head 默认调第一条,你想展示几条就调几条
6.first() 展示第一条 底层调用的是head
7.sort源码
sort源码默认升序降序解释中有
四.sql的操作方法
1.官网临时试图
2.全局试图操作
全局视图加上 global_temp 规定
五.杂项
1.报错
2.原因及代码
val spark = SparkSession.builder() .appName("Test") .master("local[2]") .getOrCreate() val mess = spark.sparkContext.textFile("file:///D:\\test\\person.txt") import spark.implicits._ val result = mess.map(_.split(",")).map(x => Info(x(0).toInt,x(1),x(2).toInt)).toDF() //在1.x 版本是可以的 在2.x不可以需要价格rdd result.map(x => x(0)).show() 这样写是对的 result.rdd.map(x => x(0)).collect().foreach(println) 去类中的数据两种写法: result.rdd.map(x => x(0)).collect().foreach(println)result.rdd.map(x => x.getAs[Int]("id")).collect().foreach(println)3.注意转义字符
对于分隔符 | 你切分一定要加转义字符,否则数据不对
感谢各位的阅读,以上就是"Spark SQL中的RDD与DataFrame转换实例用法"的内容了,经过本文的学习后,相信大家对Spark SQL中的RDD与DataFrame转换实例用法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
源码
方法
解释
代码
实例
信息
字符
就是
数据
方式
版本
隐士
学习
不行
价格
全局
内容
原因
底层
步骤
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南京欣网互联网络科技有限公司
科技金融是不是互联网金融
互联网下的科技发展
没上市的科技互联网公司
互联网科技作文
亿策互联网科技
凡科互联网科技
致聘互联网科技
互联网科技ppt模板
居家互联网科技有限公司
阿里互联网科技公司
互联网金融科技展
996高科技互联网公司
中国互联网公司排名锤子科技
长沙茂晟互联网科技有限公司
用友工业互联网科技发展
互联网营销推广黑科技
工业互联网科技创业
互联网科技博主张洲
互联网科技创业有什么好项目
互联网科技网站
北京三清互联网科技
常德市电业局互联网科技部
浙江互联网科技研学营
互联网科技研发水平
互联网科技人工智能实验室
高科技互联网套路
互联网第三次科技革命特征
张召忠谈中国互联网科技
山东蛋芒互联网科技有限公司