Spark SQL数据源:JSON数据集

news2025/2/13 23:49:59

文章目录

  • 一、读取JSON文件简介
  • 二、读取JSON文件案例演示
    • (一)创建JSON文件并上传到HDFS
    • (二)读取JSON文件,创建临时表,进行关联查询
      • 1、读取user.json文件,创建临时表t_user
      • 2、读取score.json文件,创建临时表t_score
      • 3、关联查询生成新的数据帧
    • (三)利用json()方法将数据集转成数据帧
      • 1、在Spark Shell里交互式完成任务
      • 2、在IDEA里编写Scala程序完成任务


一、读取JSON文件简介

Spark SQL可以自动推断JSON文件的Schema,并将其加载为DataFrame。在加载和写入JSON文件时,除了可以使用load()方法和save()方法外,还可以直接使用Spark SQL内置的json()方法。该方法不仅可以读写JSON文件,还可以将Dataset[String]类型的数据集转为DataFrame。

需要注意的是,要想成功地将一个JSON文件加载为DataFrame,JSON文件的每一行必须包含一个独立有效的JSON对象,而不能将一个JSON对象分散在多行。

二、读取JSON文件案例演示

(一)创建JSON文件并上传到HDFS

创建user.json文件
在这里插入图片描述

{"name": "张三", "gender": "女", "age": 18}
{"name": "李四", "gender": "男", "age": 35}
{"name": "王五", "gender": "女", "age": 24}

上传到HDFS的/input目录
在这里插入图片描述
创建score.json文件
在这里插入图片描述

{"name": "张三", "score": 98}
{"name": "李四", "score": 88}
{"name": "王五", "score": 91}

上传到HDFS的/input目录
在这里插入图片描述

(二)读取JSON文件,创建临时表,进行关联查询

1、读取user.json文件,创建临时表t_user

执行命令:val userdf = spark.read.json(“hdfs://master:9000/input/user.json”)
在这里插入图片描述
查看用户数据帧的内容,执行命令:userdf.show()
在这里插入图片描述
创建临时表t_user,执行命令:userdf.createTempView(“t_user”)
在这里插入图片描述

2、读取score.json文件,创建临时表t_score

执行命令:val scoredf = spark.read.json(“hdfs://master:9000/input/score.json”)
在这里插入图片描述
查看成绩数据帧的内容,执行命令:scoredf.show()
在这里插入图片描述

创建临时表t_score,执行命令:scoredf.createTempView(“t_score”)
在这里插入图片描述

3、关联查询生成新的数据帧

执行命令:val resultdf = spark.sql(“select u.name, u.age, s.score from t_user u inner join t_score s on u.name = s.name”)
在这里插入图片描述
查看结果数据帧的内容,执行命令:resultdf.show()
在这里插入图片描述

(三)利用json()方法将数据集转成数据帧

1、在Spark Shell里交互式完成任务

创建用户数组:执行命令:val userarr = Array(“{‘name’: ‘Mike’, ‘age’: 18}”, “{‘name’: ‘Alice’, ‘age’: 30}”, “{‘name’: ‘Brown’, ‘age’: 38}”)
在这里插入图片描述
基于用户数组创建用户数据集,执行命令:val userds = spark.createDataset(userarr)
在这里插入图片描述
将用户数据集转成用户数据帧,执行命令:val userdf = spark.read.json(userds.rdd)(注意要将数据集转成RDD才能作为json()方法的参数)
在这里插入图片描述
显示用户数据帧的内容,执行命令:userdf.show()
在这里插入图片描述

2、在IDEA里编写Scala程序完成任务

创建Dataset2DataFrame单例对象
在这里插入图片描述

package net.army.sql.day01

import org.apache.spark.sql.{Dataset, SparkSession}

/**
 * 功能:利用json()方法将数据集转成数据帧
 * 日期:2023年06月14日
 * 作者:梁辰兴
 */
object Dataset2DataFrame {
  def main(args: Array[String]): Unit = {
    // 设置HADOOP用户名属性,否则本地运行访问会被拒绝
    System.setProperty("HADOOP_USER_NAME", "root")

    // 创建或得到SparkSession
    val spark = SparkSession.builder()
      .appName("SparkSQLDataSource")
      .master("local[*]")
      .getOrCreate()

    // 导入隐式转换
    import spark.implicits._
    // 创建用户数组
    val userarr = Array("{'name': 'Mike', 'age': 18}",
      "{'name': 'Alice', 'age': 30}",
      "{'name': 'Brown', 'age': 38}")
    // 基于用户数组创建用户数据集
    val userds: Dataset[String] = spark.createDataset(userarr)
    // 将用户数据集转成用户数据帧
    val userdf = spark.read.json(userds.rdd)
    // 显示用户数据帧内容
    userdf.show()
  }
}

运行程序,查看结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高速视觉筛选机PCI Express实时运动控制卡XPCIE1028

产品导读 正运动技术的PCI Express总线运动控制卡XPCIE1028,具备位置锁存、多维高速硬件位置比较输出PSO、同步跟随、精准触发的运动控制和I/O控制功能。 配合正运动技术MotionRT7实时内核使用,可高度满足高速视觉筛选机应用所需的运动控制需求。 XPC…

png转jpg,直接改后缀?

通过把.png改为.jpg可以改变图片的格式么? 将PNG文件扩展名改为JPEG的扩展名(.jpg或.jpeg)不会更改图像的格式。它只是更改了文件扩展名,这可能导致一些图像查看器和编辑器无法正确识别和处理该文件。 PNG和JPEG是两种不同的图像文…

揭秘水文覆盖变化!使用 R 语言轻松处理 GRACE.nc 文件

一、引言 在今天越来越严重的气候变化条件下,水文覆盖成为了越来越多研究者重视的话题。水文覆盖指的是地表或植被表面被水覆盖的面积,包括河流、洼地、湖泊、蓄水池等。它反应了一个地区的水资源分布、水域利用等情况,对于水资源管理和自然…

centos7中docker安装单机版本及对应的分布式应用中心【亲测可用】

第一部分:安装docker篇 1.安装docker,sudo为以管理员身份运行,如当前登录为root用户,加上也不影响 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-…

在不安装ghostscript软件情况下,Windows中将ghostscript DLL(gsdll64.dll)库提供给python,并将资源打包进exe

1. 先安装ghostscript软件,将安装后的文件夹复制到项目文件夹下 2. 安装ghostscript,修改代码调用gsdll64.dll文件 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple ghostscript 将ghostscript 库安装的文件夹复制到项目文件夹下&#xff…

信贷产品的贷前获客营销策略搭建

在竞争激烈的信贷市场中,有效的贷前获客营销策略对于吸引潜在借款人、提高转化率以及保持客户忠诚度至关重要。本文将分享一些关于信贷产品贷前获客营销策略搭建的基本框架和经验分享,希望能对大家有所启发。 1、市场调研和目标客户定义 在制定贷前获客…

20230614使用360安全卫士的断网急救箱解决不能上网的问题

20230614使用360安全卫士的断网急救箱解决不能上网的问题 2023/6/14 12:29 未连接到互联网 网络连接错误,请检查您的网络设置 刷新 无法访问此网站youtube.com 的响应时间过长。 请试试以下办法: 检查网络连接 检查代理服务器和防火墙 运行 Windows 网…

小程序步骤条实现

步骤条实现 <template><view class"contractInfo"><view class"contractInfo_center" style"overflow-y: auto; display: flex; overflow-y: hidden"><view class"contractInfo_center_block" v-for"(ite…

AI推文三天百万播放项目拆解

小说推文是之前操作的第一个入局的项目&#xff0c;很快就跑通了0-1&#xff0c;但是实践三个月后我决定从入⻔到放弃&#xff0c;但是大家可以借鉴一下这个项目操作经验&#xff0c;网上报了两个推文项目的陪跑199299,分享一下这个经验&#xff0c;大家可以提提意⻅。 为什么…

自动驾驶专题介绍 ———— 激光雷达标定

文章目录 介绍激光雷达与激光雷达之间的外参标定激光雷达与摄像头的标定 介绍 激光雷达在感知、定位方面发挥着重要作用。跟摄像头一样&#xff0c;激光雷达也是需要进行内外参数标定的。内参标定是指内部激光发射器坐标系与雷达自身坐标系的转换关系&#xff0c;在出厂之前就已…

管理类联考——逻辑——知识篇——第二章 模态命题(考1题)(以性质命题为基础)

第二章 模态命题&#xff08;考1题&#xff09;&#xff08;以性质命题为基础&#xff09; 一、模态命题 模态命题多指包含有“必然&#xff08;一定&#xff09;”或“可能”这两个模态词的狭义模态命题&#xff1a;必然命题或可能命题。 二、模态考点 联考中模态的考点比…

uniapp小程序中的相关设置

要让uniapp中的背景图片全屏&#xff0c;可以在<style>标签中添加以下样式&#xff1a; page { background-image: url(/static/bg.jpg); background-size: cover; background-repeat: no-repeat; background-position: center center; } 在这个样式中&…

终于让我找到支持任意经纬度生活指数查询API 了

引言 未来7天生活指数API 支持通过输入任意经纬度查询&#xff0c;提供丰富包括晨练、洗车、穿衣、感冒、运动、旅游、舒适度、紫外线、钓鱼、晾晒、过敏、啤酒等多个方面的指数&#xff0c;为用户提供了更加全面的天气信息和建议。 在本文中&#xff0c;我们将深入了解未来7…

华为OD机试真题 Java 实现【非严格递增连续数字序列】【2022Q4 100分】

一、题目描述 输入一个字符串仅包含大小写字母和数字&#xff0c;求字符串中包含的最长的非严格递增连续数字序列的长度&#xff0c;比如122889属于非严格递增连续数字序列。 二、输入描述 输入一个字符串仅包含大小写字母和数字&#xff0c;输入的字符串最大不超过255个字符…

Windows和MacOS平台上发现多个Zoom漏洞,已发布补丁

最新的Zoom漏洞列表已经出来了&#xff0c;其中几个漏洞的严重程度非常高。此次发布的补丁针对六个漏洞。 这些漏洞几乎影响了所有的Windows客户端&#xff0c;而有两个是在MacOS平台发现的。它们的严重程度各不相同&#xff0c;有可能被攻击者利用&#xff0c;以获得未经授权…

有没有哪个瞬间,让你突然对ChatGPT感到失望? | AIGC实践

不知道你是否和我一样&#xff0c;在第一次使用ChatGPT输入Prompt&#xff0c;并得到答复的那一刻&#xff0c;都会忍不住地赞叹一句&#xff1a;握草。 但随着时间慢慢拉长&#xff0c;体验不断深入&#xff0c;想法也会慢慢改变…… 主题图 by Midjourney。Prompt&#xff1a…

【道友避坑】CUB数据集转yolov5格式

写在前面&#xff1a;最近我拿到一个CUB_200_2011鸟类训练模型&#xff0c;但是我想将他转为yolov的格式进行应用。看了些其他博主博客后&#xff0c;发现跳跃性有些强。再此记录转换过程&#xff0c;希望各位道友修得此法后&#xff0c;能有所收获&#xff01; 一、获取数据集…

PCA算法

文章目录 1. 数据降维2. PCA原理2.1 基变换2.2 方差2.3 协方差2.4 协方差矩阵2.5 协方差矩阵对角化 3. PCA算法流程4. PCA算法的特点5. PCA算法的Python应用6. 源码仓库地址 1. 数据降维 在许多领域的研究与应用中&#xff0c;通常需要对含有多个变量的数据进行观测&#xff0…

免费AI编程工具- AWS CodeWhisperer安装(IDEA)

一、介绍 CodeWhispere介绍&#xff1a;可以根据IDE中的注释或者现有的一些提示、代码&#xff0c;来生成代码段或者建议。支持多种编程语言&#xff0c;可以和常用的IDE进行无缝集成。和GitHub Copilot和Cursor不同&#xff0c;个人使用是完全免费的&#xff0c;没有门槛。 …

极致呈现系列之:Echarts柱状图的创意设计与数字美学的完美平衡

先看下最终效果 目录 数字之美&#xff1a;Echarts柱状图的基础应用形色俱佳&#xff1a;Echarts柱状图的样式美化与创意设计独具匠心&#xff1a;Echarts柱状图的柱体形状自定义动感十足&#xff1a;Echarts柱状图的交互动画实现数字排序的艺术&#xff1a;Echarts柱状图的数…