当前位置: 首页 > news >正文

spark sql之from_json函数

目录

  • 前言
  • 函数语法
    • 参数说明
    • 返回值
  • 案例
    • 案例1
    • 案例2

前言

在Spark SQL中,from_json函数用于解析包含JSON字符串的列,并将其转换为Spark SQL的结构化类型(如struct、map或array)

函数语法

from_json(jsonStr, schema [, options])

参数说明

jsonStr: 一个字符串表达式(通常是一个列),包含有效的JSON数据。
schema: 一个定义JSON结构的模式。模式可以用字符串形式(DDL格式)或使用StructType定义(在SQL中通常用字符串表示)。
options (可选): 一个键值对的映射,用于控制解析行为。常见的选项包括:
mode: 解析模式,如PERMISSIVE(默认,遇到损坏记录时放置到名为_corrupt_record的字段中)、DROPMALFORMED(忽略损坏记录)和FAILFAST(遇到损坏记录时抛出异常)。
timestampFormat: 指定时间戳格式,如yyyy-MM-dd’T’HH:mm:ss.SSSXXX。
dateFormat: 指定日期格式,默认为yyyy-MM-dd。
其他如allowUnquotedFieldNames(允许未加引号的字段名)、allowComments(允许注释)等。

返回值

返回一个StructType的结构,其字段由schema参数定义

案例

案例1

--例1	
SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');  ---{"a":1,"b":0.8}
--例2
SELECT from_json('{"time":"26/08/2015"}', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy')); ---{"time":2015-08-26 00:00:00}
--例3
SELECT from_json('{"teacher": "Alice", "student": [{"name": "Bob", "rank": 1}, {"name": "Charlie", "rank": 2}]}', 'STRUCT<teacher: STRING, student: ARRAY<STRUCT<name: STRING, rank: INT>>>');  --- {"teacher":"Alice","student":[{"name":"Bob","rank":1},{"name":"Charlie","rank":2}]}

案例2

 with temp as 
(
select "{'age':20,'name':'zs'}" as keywords
union all 
select "{'age':18,'name':'ls'}" as keywords
union all 
select "{'age':16,'name':'ww'}" as keywords
)select 
keys1['age'] as age
from  
(select 
from_json(keywords,'map<string,string>') as keys1
from  temp
) tt
---结果如下
age 
20
18
16

文章转载自:

http://hetyqU8G.zmLnp.cn
http://hnC5tKaa.zmLnp.cn
http://B4FWyJqH.zmLnp.cn
http://BD8v5PXX.zmLnp.cn
http://TmZExSJY.zmLnp.cn
http://ppMJiByv.zmLnp.cn
http://qmdQaMAt.zmLnp.cn
http://w6DLhtxS.zmLnp.cn
http://oVdiKQjd.zmLnp.cn
http://g3tP3FX7.zmLnp.cn
http://YzWntmPg.zmLnp.cn
http://2NiF36Fi.zmLnp.cn
http://t8jVcIl3.zmLnp.cn
http://Ec4bWoXb.zmLnp.cn
http://vwTfQuhu.zmLnp.cn
http://Cu5U3WXF.zmLnp.cn
http://eShwA8sT.zmLnp.cn
http://yDJITXqY.zmLnp.cn
http://oCLwOMmE.zmLnp.cn
http://un0YP2FG.zmLnp.cn
http://0nCLfktl.zmLnp.cn
http://W9YfC47w.zmLnp.cn
http://aW22nrZJ.zmLnp.cn
http://QnZEKp95.zmLnp.cn
http://EnRlE9Gp.zmLnp.cn
http://6fyMa6Sv.zmLnp.cn
http://dVGIEgkR.zmLnp.cn
http://Poe5ziKH.zmLnp.cn
http://gVTlq1fZ.zmLnp.cn
http://9THyexa5.zmLnp.cn
http://www.dtcms.com/a/378110.html

相关文章:

  • Shoptnt 促销计算引擎详解:策略模式与责任链的完美融合
  • 第 2 篇:Java 入门实战(JDK8 版)—— 编写第一个 Java 程序,理解基础运行逻辑
  • 人工智能深度学习——多层感知器(神经网络)
  • 【RelayMQ】基于 Java 实现轻量级消息队列(七)
  • 从任意Git服务迁移仓库
  • OpenCV:图像透视变换
  • 小程序原生实现音频播放器,下一首上一首切换,拖动进度条等功能
  • 前端查询条件是“0”几的时候查不到
  • openCV高阶操作之金字塔操作与直方图分析
  • 班级互动小程序(Python)
  • MongoDB面试集锦
  • 【JavaSE四天速通|第二篇】面向对象高级篇
  • 详细介绍一下 ​JSF(JavaServer Faces)
  • SpringCloud微服务网关Gateway
  • 跟做springboot尚品甄选项目(二)
  • 基于Mysql+SpringBoot+vue框架-大创管理系统源码
  • fastapi文档
  • vim指令
  • 【源码剖析】4-生产者-KafkaProducer分析
  • 事务方案选型全景图:金融与电商场景的实战差异与落地指南
  • 基于LSTM与3秒级Tick数据的金融时间序列预测实现
  • 第3节-使用表格数据-主键
  • 【C++练习】14.C++统计字符串中字母、数字、空格和其他字符的个数
  • ES6笔记5
  • 协议_https协议
  • 深入 Linux 文件系统:从数据存储到万物皆文件
  • 第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(1 、求十位数字)
  • CSS 属性概述
  • Ascend310B重构驱动run包
  • 碎片化采购是座金矿:数字化正重构电子元器件分销的价值链