Spark SQL中的RDD与DataFrame转换实例用法
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要讲解了"Spark SQL中的RDD与DataFrame转换实例用法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Spark SQL中的R
千家信息网最后更新 2025年02月04日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安全错误
数据库的锁怎样保障安全
广州智能巡检软件开发中心
本人30想学软件开发
我的服务器上网上邻居有多个
中国工商银行软件开发怎么样
navicat导出数据库
互联网数字科技特效
网络安全威胁的种类及描述
网络安全意识对社会的影响
小服务器 客机3代
中国动物科学数据库
长宁区网络技术开发市场价格
网络安全测试 黑盒 白盒
腾讯云12m宽带服务器
宁波大学数据库cpci
某某公司网络安全需求分析
网络安全等保2.0测评手册下载
服务器的安装和管理
妇联会网络安全宣传
verycd服务器名称
苹果ID解锁软件开发
网络安全全民上网手抄报
新型网络安全
什么叫nds服务器
视频数据库方案
葡萄牙语翻译软件开发
无锡软件开发代理品牌
网络安全销售许可证
陕西曙光服务器维修调试虚拟主机
宜兴重型软件开发项目信息
无线网络技术第四版课后习题答案