我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Spark SQL中的RDD与DataFrame转换实例用法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Spark SQL中的RDD与DataFrame转换实例用法

这篇文章主要讲解了“Spark SQL中的RDD与DataFrame转换实例用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spark SQL中的RDD与DataFrame转换实例用法”吧!

一.第一种方式RDD转化为DataFrame

1.官网

Spark SQL中的RDD与DataFrame转换实例用法

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后没有限制了

Spark SQL中的RDD与DataFrame转换实例用法

二.第二种转换方式

1.官网

Spark SQL中的RDD与DataFrame转换实例用法

2.解释

制定scheme信息 就是编程的方式   作用到Row 上面

3.步骤

Spark SQL中的RDD与DataFrame转换实例用法

4.步骤解释

从原有的RDD转化 ,类似于textFile一个StructType匹配Row里面的数据结构(几列),就是几个StructField 通过createDataFrame  把schema与RDD关联上

5.源码解释StructType

Spark SQL中的RDD与DataFrame转换实例用法

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.经典错误

Spark SQL中的RDD与DataFrame转换实例用法

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)

Spark SQL中的RDD与DataFrame转换实例用法

Spark SQL中的RDD与DataFrame转换实例用法

3.select方法源码

Spark SQL中的RDD与DataFrame转换实例用法

Spark SQL中的RDD与DataFrame转换实例用法

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 默认调第一条,你想展示几条就调几条

Spark SQL中的RDD与DataFrame转换实例用法

6.first() 展示第一条  底层调用的是head

Spark SQL中的RDD与DataFrame转换实例用法

7.sort源码

sort源码默认升序降序解释中有

Spark SQL中的RDD与DataFrame转换实例用法

四.sql的操作方法

1.官网临时试图

Spark SQL中的RDD与DataFrame转换实例用法

2.全局试图操作

全局视图加上  global_temp 规定

Spark SQL中的RDD与DataFrame转换实例用法

五.杂项

1.报错

Spark SQL中的RDD与DataFrame转换实例用法

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转换实例用法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Spark SQL中的RDD与DataFrame转换实例用法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Spark SQL中的RDD与DataFrame转换实例用法

这篇文章主要讲解了“Spark SQL中的RDD与DataFrame转换实例用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spark SQL中的RDD与DataFrame转换实例用法”吧
2023-06-02

java中JsonObject与JsonArray转换方法实例

在项目日常开发中常常会遇到JSONArray和JSONObject的转换,很多公司刚入职的小萌新会卡在这里,下面这篇文章主要给大家介绍了关于java中JsonObject与JsonArray转换方法的相关资料,需要的朋友可以参考下
2023-05-17

sql中替换函数replace()用法与实例总结

本教程全面介绍了SQL中的REPLACE()函数及其用法。REPLACE()函数用于替换字符串中的文本,语法为REPLACE(string,old_text,new_text)。函数支持替换特定单词、删除字符、多重替换和正则表达式替换。注意事项包括区分大小写、空new_text将删除旧文本以及区分Unicode字符。SUBSTRING()和CONCAT()函数可作为替代方案。
sql中替换函数replace()用法与实例总结
2024-04-02

Python中DataFrame与内置数据结构相互转换的实现

pandas 支持我们从 Excel、CSV、数据库等不同数据源当中读取数据,来构建 DataFrame。但有时数据并不来自这些外部数据源,这就涉及到了 DataFrame 和 Python 内置数据结构之间的相互转换,本文就来和大家详细聊聊
2023-02-10

C++11中explicit类型转换运算符的实例用法

这篇文章主要介绍“C++11中explicit类型转换运算符的实例用法”,在日常操作中,相信很多人在C++11中explicit类型转换运算符的实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++11
2023-06-19

JAVA11中图片与BASE64相互转换的实现方法

这篇文章主要介绍了JAVA11中图片与BASE64相互转换的实现方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。常用的java框架有哪些1.SpringMVC,Spring
2023-06-14

SQL中使用CONVERT函数转换数据类型的简单实现方法

目录CONVERT函数简介基本语法使用示例python1. 将字符串转换为数字2. 将日期转换为不同格式的字符http://www.lsjlt.com串常见的转换类型和格式注意事项适用场景总结CONVERT函数简介在SQL中,CONVER
SQL中使用CONVERT函数转换数据类型的简单实现方法
2024-09-14

Java中JavaBean对象和Map的互相转换方法实例

为什么需要将javaBean和map进行转换,在很多应用场景中,需要将key=value形式的数据与javaBean对象相互转换,下面这篇文章主要给大家介绍了关于Java中JavaBean对象和Map的互相转换的相关资料,需要的朋友可以参考下
2022-11-16

SQL Server中数据类型转换的原理、使用方法、常见场景示例讲解

目录1. 数据类型转换的概述1.1 隐式转换示例:隐式转换输出:1.2 显式转换示例:显式转换输出:2. 使用 CAST 函数进行转换2.1 基本语法2.2 CAST 转换示例2.2.1 将整javascript数转换为字符串输出:2.2.
SQL Server中数据类型转换的原理、使用方法、常见场景示例讲解
2024-09-22

Android中ViewPager的PagerTabStrip与PagerTitleStrip用法实例

零、概览 1.ViewPager说白了就是个控件,在使用时包名要带全是Android.support.v4.view.ViewPager。由于我的ADT-Bundle版本比较高,这个包默认自带了,且默认是随apk打包导出的。如下图:如果在A
2022-06-06

网站建设中编码转码工具实现utf-8与gbk转换的方法

这篇文章给大家介绍网站建设中编码转码工具实现utf-8与gbk转换的方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。所以最好的方法是直接使用编码转换软件,我用的软件是convertz,貌似这个软件N年前开发出来后就没
2023-06-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录