无法分解 Spark 数据框中的嵌套 JSON
我是 spark 新手。我试图展平数据框,但未能通过“爆炸”做到这一点。
原始数据框架构如下:
id|approvaljson 1|[{"approvertype":"1st line manager","status":"approved"},{"approvertype":"2nd line manager","status":"approved"}] 2|[{"approvertype":"1st line manager","status":"approved"},{"approvertype":"2nd line manager","status":"rejected"}]
我需要将其转换为以下架构?
id|approvaltype|status 1|1st line manager|approved 1|2nd line manager|approved 2|1st line manager|approved 2|2nd line manager|rejected
我已经尝试过
df_exploded = df.withcolumn("approvaljson", explode("approvaljson"))
但是我得到了错误:
Cannot resolve "explode(ApprovalJSON)" due to data type mismatch: parameter 1 requires ("ARRAY" or "MAP") type, however, "ApprovalJSON" is of "STRING" type.;
正确答案
首先将类似 json 的字符串解析为结构数组,然后使用 inline
将数组分解为行和列
df1 = df.withcolumn("approvaljson", f.from_json("approvaljson", schema="array<struct<approvertype string, status string>>")) df1 = df1.select("id", f.inline('approvaljson'))
结果
df1.show() +---+----------------+--------+ | ID| ApproverType| Status| +---+----------------+--------+ | 1|1st Line Manager|Approved| | 1|2nd Line Manager|Approved| | 2|1st Line Manager|Approved| | 2|2nd Line Manager|Rejected| +---+----------------+--------+
以上是无法分解 Spark 数据框中的嵌套 JSON的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

我有一个jwt令牌,我可以在https://jwt.io/网站上看到解码后的令牌。它不需要我设置任何秘密或声明。所以我正在寻找一种方法来解码令牌以获得过期日期而不提供任何秘密。我正在使用库ngopkg.in/square/go-jose.v2/jwt,下面是我的代码:token,err:=jwt.ParseSigned(jwtToken)返回值token有一个标头字段,其中包括keyid、算法,但它没有给我过期日期。我搜索过这个主题,人们说使用github.com/a

parse 函数解析字符串,将其转换为由分隔符分隔的令牌列表。步骤:1. 从字符串开头搜索第一个非分隔符字符;2. 继续搜索直到遇到分隔符,并在该分隔符处终止字符串;3. 将令牌存储在令牌数组中;4. 重复 1-3 步,直至字符串结束;5. 在数组末尾添加指向 NULL 的指针,表示数组结束。

我有一个用例,我们在x-www-form-urlencoded主体中获取嵌套键值,如下所示name=abc&age=12¬es[key1]=value1¬es[key2]=value2我尝试了url.parsequery("name=abc&age=12¬es\[key1\]=value1¬es\[key2\]=value2")但它给出了{"name":"abc","age":12,"notes[key1]":"value1","note

在 C++ 中,有两种将 string 转换为 int 的方法:使用 sto i() 函数,直接接收字符串并返回整数。使用 istringstream 类,将字符串解析为输入流,然后提取整数。选择方法取决于字符串格式:如果格式明确且无非数字字符,stoi() 更简洁;如果字符串可能包含非数字字符或需要自定义转换,则 istringstream 更灵活。

Java中的parse指将字符串或其他表示形式转换为指定类型或对象的处理过程。常见的应用包括将字符串转换为数字类型、日期/时间对象、JSON对象以及从XML文档中提取数据。通过内置方法、格式化器类或第三方库进行parse。

Go语言中解析地址的关键函数包括:net.ParseIP():解析IPv4或IPv6地址。net.ParseCIDR():解析CIDR标记。net.ResolveIPAddr():解析主机名或IP地址为IP地址。net.ResolveTCPAddr():解析主机名和端口为TCP地址。net.ResolveUDPAddr():解析主机名和端口为UDP地址。

Go语言反射允许在运行时操控变量值,包括修改布尔值、整数、浮点数和字符串。通过获取变量的Value,可以调用SetBool、SetInt、SetFloat和SetString方法进行修改。例如,可以解析JSON字符串为结构体,然后使用反射修改结构体字段的值。需要注意,反射操作较慢,且无法修改不可修改字段,修改结构体字段值时可能不会自动更新相关字段。

深入了解PHP:JSONUnicode转中文的实现方法在开发中,我们经常会遇到需要处理JSON数据的情况,而JSON中的Unicode编码在一些场景下会给我们带来一些问题,特别是当需要将Unicode编码转换为中文字符时。在PHP中,有一些方法可以帮助我们实现这个转换过程,下面将介绍一种常用的方法,并提供具体的代码示例。首先,让我们先了解一下JSON中Un
