【hadoop学习之路】Spark-SQL 实验报告 RDD转DataFrame

2023-10-27

1. Spark-SQL 基本操作

1.1 需求

将下列JSON格式数据复制到Linux系统中,并保存命名为employee.json

{ "id":1 , "name":"Ella" , "age":36 }

{ "id":2, "name":"Bob","age":29 }

{ "id":3 , "name":"Jack","age":29 }

{ "id":4 , "name":"Jim","age·":28 }

{ "id":4 , "name":"Jim","age":28 }

{ "id":5 , "name":"Damon" }

{ "id":5 , "name":"Damon" }

为employee.json创建DataFrame,并写出Scala语句完成下列操作:

(1)  查询所有数据;

(2)  查询所有数据,并去除重复的数据;

(3)  查询所有数据,打印时去除id字段;

(4)  筛选出age>30的记录;

(5)  将数据按age分组;

(6)  将数据按name升序排列;

(7)  取出前3行数据;

(8)  查询所有记录的name列,并为其取别名为username;

(9)  查询年龄age的平均值;

(10) 查询年龄age的最小值。

1.2 实现

** 我保存的文件路径:/test/employee.json

1) 为employee.json创建DataFrame

在scala命令行中输入如下语句:

import org.apache.spark.sql.SparkSession
import spark.implicits._

// 创建一个spark sql对象
val spark = SparkSession.builder().getOrCreate()

// 读取本地json文件,并得到df
val df = spark.read.json("file:///test/employee.json")

// 展示df的所有内容
df.show()

2) 把表employeesDF注册为临时表

df.createOrReplaceTempView("e")

(1)查询所有数据

spark.sql("select * from e").show

(2)  查询所有数据,并去除重复的数据;

spark.sql("select distinct * from e").show

(3)  查询所有数据,打印时去除id字段;

spark.sql("select age, name from e").show

(4)  筛选出age>30的记录;

spark.sql("select * from e where age > 30").show

(5)  将数据按age分组;

spark.sql("select count(age) from e group by age").show

(6)  将数据按name升序排列;

spark.sql("select * from e order by name asc").show

(7)  取出前3行数据;

spark.sql("select * from e limit 3").show

(8)  查询所有记录的name列,并为其取别名为username;

spark.sql("select name as username from e").show

(9)  查询年龄age的平均值;

spark.sql("select avg(age) from e").show

(10) 查询年龄age的最小值。

spark.sql("select min(age) from e").show

1.3 运行结果

2. 编程实现将RDD转换为DataFrame

2.1 需求

请将数据students_data.txt,实现从RDD转换得到DataFrame,并将表中的内容输出。请写出程序代码。

2.2 实现

在scala命令行中输入如下语句:

// 导包
import org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
import org.apache.spark.sql.Encoder
import spark.implicits._

// 定义一个Student类
case class Student(id:Int, name:String, gender:String, age:Int, course_id:Int, score:Double, classes:String)

// 读取文件
val df1 = spark.sparkContext.textFile("file:///test/students_data.txt")

// 以逗号为分隔符分割文字
val df2 = df1.map(_.split(","))

// 将df2转换为DataFrame格式的df3
val df3 = df2.map(attributes => Student(attributes(0).trim.toInt, attributes(1), attributes(2), attributes(3).trim.toInt, attributes(4).trim.toInt, attributes(5).trim.toDouble, attributes(6))).toDF()

// 必须注册为临时表才能供下面的查询使用
df3.createOrReplaceTempView("s")

// 使用spark-sql 语句展示表格内容
spark.sql("select * from s").show

2.3 运行结果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【hadoop学习之路】Spark-SQL 实验报告 RDD转DataFrame 的相关文章

  • Sqoop 导出分区的 Hive 表

    我在尝试导出分区的 Hive 表时遇到了一些问题 这是否完全受支持 我尝试用谷歌搜索并找到一张 JIRA 票证 sqoop export connect jdbc mysql localhost testdb table sales exp
  • sbt:编译测试时设置特定的 scalacOptions 选项

    通常我使用这组选项来编译 Scala 代码 scalacOptions Seq deprecation encoding UTF 8 feature unchecked language higherKinds language impli
  • Scala - lambda 参数可以匹配元组吗?

    所以说我有一些清单 比如 val l List 1 blue 5 red 2 green 然后我想过滤掉其中一个 我可以做类似的事情 val m l filter item gt val n s item unpack the tuple
  • 内存泄漏在哪里?

    我使用 InetAddress 来解析 IP 地址 但现在如果 IP 不可用 则需要存储主机名 所以我介绍了一个班级Host case class Host name String ip InetAddress import Host ad
  • 在 Spark 中将流式 XML 转换为 JSON

    我是 Spark 新手 正在开发一个简单的应用程序 将从 Kafka 接收的 XML 流转换为 JSON 格式 Using 火花2 4 5 斯卡拉 2 11 12 在我的用例中 kafka 流采用 xml 格式 以下是我尝试过的代码 val
  • 获取两个顶点之间的边属性值时出现 ClassCastException

    我正在尝试获取两个顶点之间的边缘属性值并低于异常 java lang ClassCastException 无法将 java lang String 转换为 scala runtime Nothing 环境 内存中的泰坦 Code val
  • Scala 中缺少多重集吗?

    我正在尝试 Scala 中的 Facebook Hacker Cup 2013 资格赛问题 对于第三个问题 我觉得需要一个有序的 Multiset 但在 scala 的 2 10 集合中找不到一个 scala 的集合中是否缺少此数据结构 会
  • Scala REPL / SBT Console 是否有配置文件?

    我一直在尝试找到某种点文件来放入 Scala REPL 设置和自定义函数 我特别有兴趣传递它的标志 例如 Dscala color 启用语法突出显示 以及覆盖设置 如结果字符串截断 scala gt power scala gt vals
  • 如何初始化子类型中特征的值?

    如果我写 trait T val t 3 val u 1 t Nil class U extends T override val t 2 new U u 它表明了这一点 List 1 0 我应该如何更改上面的代码以使其显示以下内容 Lis
  • 如何设置 jacoco4sbt 来处理 Play 中主模块和子模块中的类?

    我有一些问题要解决雅可可4sbt https github com sbt jacoco4sbt正在使用我的 Play 2 3 4 项目 我的项目由 3 个子模块组成 common api and frontend并且没有代码app根文件夹
  • 如何使用 FS2 中的分类器函数对对象进行分组?

    我有一个无序的流measurements 我想将其分组为固定大小的批次 以便以后可以有效地保留它们 val measurements for id lt Seq foo bar baz value lt 1 to 5 yield id va
  • Build.scala中%和%%符号含义

    我是新来玩的 Framework 2 1 java版本 并且没有scala经验 我不明白什么是以及什么是 and 在 Build scala 中表示 我用谷歌搜索了它们但找不到它们的含义 在我的 Build scala 文件中 我有 org
  • Scala 匿名函数中的 return 语句

    为什么显式 return 语句 使用return关键字 在匿名函数中从封闭的命名函数返回 而不仅仅是从匿名函数本身返回 例如 以下程序会导致类型错误 def foo String x Integer gt return x foo 我知道建
  • 读取不同文件夹深度的多个 csv 文件

    我想递归地将给定文件夹中的所有 csv 文件读入 Spark SQLDataFrame如果可能的话 使用单一路径 我的文件夹结构如下所示 我想包含具有一个路径的所有文件 resources first csv resources subfo
  • 比较 javascript 元素和 scala 变量的 Play 框架 Twirl 模板

    如下面的代码示例所示 我想比较 scala 辅助元素内的 javascript 元素 然而 即使存在元素 abcde 它也始终返回 false 除了使用标签之外 如何获取 scala 辅助元素内的 javascript 值 appSeq S
  • 使用 org.apache.hadoop/* 依赖项离线编译 sbt 时遇到的问题

    使用依赖于 org apache hadoop 包的 sbt 进行离线编译时遇到很多麻烦 一个简单的build sbt name Test version 1 0 scalaVersion 2 10 4 libraryDependencie
  • Scala 中用于阻止调用的 Future

    The Akka文档说 you may be tempted to just wrap the blocking call inside a Future and work with that instead but this strate
  • Scala 中的高级类型 [重复]

    这个问题在这里已经有答案了 我正在阅读 Scala 中的函数式编程一书 在 Monoids 章节中 他们讨论了 Monoid 接口 如下所示 trait Monoid A def op a1 A a2 A A def zero A 后来 他
  • Map 和 Set 的实际类(不是抽象类,也不是特征类)是什么?

    在 Scala 中 映射和集合文字可以通过以下方式创建 val m Map 1 gt a 以及引用的类型m字面意思都是Map Int String 然而 scala文档表明Map实际上是一个特征 具有需要实现才能实例化的抽象成员 scala
  • Spark scala:大量列上的简单 UDF 会导致性能下降

    我有一个包含 1 亿行和约 10 000 列的数据框 这些列有两种类型 标准 C i 和动态 X i 这个dataframe是经过一些处理后得到的 性能很快 现在只剩下2步了 Goal 需要使用 C i 列的相同子集对每个 X i 执行特定

随机推荐

  • python ADF检验

    前言 本文对ADF检验进行研究 python示例代码 不对概念进行分析介绍 Code import numpy as np import matplotlib pyplot as plt from statsmodels tsa statt
  • EPOLLRDHUP EPOLLHUP 事件

    EPOLLRDHUP是从Linux内核2 6 17开始由GNU引入的事件 对端正常关闭 程序里close shell下kill或ctr c 触发EPOLLIN和EPOLLRDHUP 但是不触发EPOLLERR 和EPOLLHUP 再man
  • 最新物联网毕设100例(一)

    单片机毕业设计项目分享系列 这里是DD学长 单片机毕业设计及享100例系列的第一篇 目的是分享高质量的毕设作品给大家 包含全面内容 源码 原理图 PCB 实物演示 论文 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的单片机项目缺少
  • 图像分割套件PaddleSeg全面解析(八)预测代码解读

    训练完成模型之后 可以对图片进行预测 还可以实现模型结果可视化 查看分割效果 运行命令如下 python predict py config configs quick start bisenet optic disc 512x512 1k
  • C# ListView用法详解

    拖控件 listView 控件到新建form中 并添加相应的button lable和textbox 如下图 1 点击表格右上角的三角形 添加表头信息 2 Name 程序里调用的名称 Text 表格里显示的信息 其它可以设置大小等信息 3
  • 视频托管--七牛云

    目录 vue video player 视频托管 vue video player 安装 npm install vue video player S 在main js导入 vue video播放器 require video js dis
  • npm登录:忘记了用户名和密码,通过邮箱找回流程

    登录npm时发现用户名和密码我都忘了 幸好绑定了邮箱 通过邮箱重设密码与登录 1 在npm官网sign in界面点击Forgot password 2 输入邮箱发送email 3 邮件中会给出你的用户名和一个地址跳转链接 点击跳转链接 4
  • 查看docker运行中的命令行输出

    访问本站观看效果更佳 当我在用docker跑pytorch时 因为训练时间长 网络不好的时候 终端会停止输出命令行结果 为了查看命令行的输出结果 我们可以运行如下命令 docker logs ID或者名字 可以查看容器内部的标准输出 下面再
  • cmmi实践访谈测试ppt_汽车嵌入式软件测试——软件质量度量评价指标

    在上一期中 介绍了常见的软件质量度量模型 McCall Boehm ISO 9126模型 通过这些模型可以对软件质量进行科学的评价 在本期中 主要介绍 7个软件质量的评价指标 编码规范 源代码行 千行代码bug率 圈复杂度 代码覆盖率 扇入
  • Tensorflow Lite之编译生成tflite文件

    这是tensorflow生成的各种模型文件 GraphDef pb a protobuf that represents the TensorFlow training and or computation graph This conta
  • web开发中的四个域对象生命周期 作用域详细介绍

    Web开发中的四个域对象 有范围小到大 page jsp有效 request 一次请求 session 一次会话 application 当前web应用 page域指的是pageContext request域指的是HttpServletR
  • forEach 中的 return 到底有效吗?如何优雅地中断 forEach 循环?

    在JavaScript中 forEach是一个常用的数组遍历方法 然而 很多人可能误解了forEach中的return语句的作用 本文将详细解释forEach中的return是否有效以及如何优雅地中断forEach循环 forEach 中的
  • swagger主页访问报错500

    背景 有一天前端给我要接口文档 我给发了个接口文档路径 结果直接报错500 截图如下 原因分析 500报错 看后台日志 java lang NullPointerException null at springfox documentati
  • R语言之函数调用

    处理数据对象的实用函数 函 数 功 能 length object 显示对象中元素 成分的数量 dim object 显示对象的维度 str object 显示对象的结构 class object 显示对象的类型 mode object 显
  • 还在为数据清洗抓狂?这里有一个简单实用的清洗代码集

    选自towardsdatascience 作者 Admond Lee 机器之心编译 参与 Geek AI 张倩 数据清洗是数据科学家逃不掉的一份苦差事 为了让这项工作不那么痛苦 本文作者分享了自己的数据清洗代码集 现实世界中的数据通常质量不
  • 听说你还不知道什么是 python?带你深入理解什么是 python

    文章目录 前言 什么是python python的由来 我们为什么要学习python 帮助python学习的网站 前言 各位朋友们 大家好 在之后的时间里 我将陆续为大家分享我在python学习过程中学习到的知识点 如果你也对python感
  • 【随机过程】 17 -离散时间马氏链典型应用

    离散时间马尔科夫链的典型应用 文章目录 离散时间马尔科夫链的典型应用 0 概述 1 Page Rank 1 1 背景 1 2 模型建立 1 3 模型求解 2 MCMC 2 1 概述 2 2 实现思路 2 3 具体实现 2 3 1 第一步 细
  • Qt基础之五:使用invokeMethod异步调用函数

    在主线程中如果执行比较耗时的任务 但是又不想单独开子线程来处理 不妨试试Qt中提供QMetaObject invokeMethod方法 该方法支持函数的异步调用 这样就会在界面显示后去执行 而不会卡主主界面 QMetaObject invo
  • [linux-sd-webui]图生文,blip/deepbooru

    GitHub pharmapsychotic clip interrogator Image to prompt with BLIP and CLIPImage to prompt with BLIP and CLIP Contribute
  • 【hadoop学习之路】Spark-SQL 实验报告 RDD转DataFrame

    1 Spark SQL 基本操作 1 1 需求 将下列JSON格式数据复制到Linux系统中 并保存命名为employee json id 1 name Ella age 36 id 2 name Bob age 29 id 3 name