专栏首页祝威廉Spark SQL操作JSON字段小Tips

Spark SQL操作JSON字段小Tips

前言

很多时候,比如用structure streaming消费kafka数据,默认可能是得到key,value字段,key是偏移量,value是一个byte数组。很可能value其实是一个Json字符串。这个时候我们该如何用SQL操作这个json里的东西呢?另外,如果我处理完的数据,我想写入到kafka,但是我想把整条记录作为json格式写入到Kafka,又该怎么写这个SQL呢?

get_json_object

第一个就是get_json_object,具体用法如下:

select get_json_object('{"k": "foo", "v": 1.0}','$.k') as k

需要给定get_json_object 一个json字段名(或者字符串),然后通过类似jsonPath的方式去拿具体的值。 这个方法其实有点麻烦,如果要提取里面的是个字段,我就要写是个类似的东西,很复杂。

from_json

具体用法如下:

select a.k from  (
select from_json('{"k": "foo", "v": 1.0}','k STRING, v STRING',map("","")) as a
)

这个方法可以给json定义一个Schema,这样在使用时,就可以直接使用a.k这种方式了,会简化很多。

to_json

该方法可以把对应字段转化为json字符串,比如:

select to_json(struct(*)) AS value

可以把所有字段转化为json字符串,然后表示成value字段,接着你就可以把value字段写入Kafka了。是不是很简单。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spark 2.0 Structured Streaming 分析

    Spark 2.0 将流式计算也统一到DataFrame里去了,提出了Structured Streaming的概念,将数据源映射为一张无线长度的表,同时将流式...

    用户2936994
  • 高昂的PR,开源的困惑

    我是个急性子,所以没怎么成功给社区提过PR,除非那个项目是我自己的,或者社区让我有直接Merge的权限。好比之前吐槽完SDL开发太慢后,自己直接fork了一份,...

    用户2936994
  • 使用Spark SQL 构建流式处理程序

    今天介绍利用 StreamingPro 构建流式(Spark Streaming)计算程序

    用户2936994
  • 3分钟短文 | PHP咋判断字符串是标准JSON?这样写很高效

    在MYSQL 5.6及以下没有 JSON 这个字段类型的时候,我们还只能用字符串存储数组,对象,这些结构数据;甚至有直接将序列化的对象存库的,都是无奈之举。

    程序员小助手
  • 《JSON笔记之二》----封装JSONUtil

    许多java开发人员对于fastjson再也熟悉不过了,这是alibaba开源的依赖,使用fastjson可以使我们很容易的把请求json串转换成为我们所需要的...

    沁溪源
  • python爬虫系列之数据的存储(一):json库的使用

    在上一篇文章里我们讲了 xpath写法的问题还以爬取我的文章信息写了示例,但是在上一篇中我们只是爬取并打印了信息,并没有对信息进行保存。

    渔父歌
  • MySQL中的json字段

    MySQL5.7.8中引入了json字段,这种类型的字段使用的频率比较低,但是在实际操作中,有些业务仍然在用,我们以此为例,介绍下json字段的操作方法:

    AsiaYe
  • Python json 模块dumps、dump、loads、load的使用

    本文主要讲下json.dumps和json.dump、json.loads和json.load的区别,因为经常需要加载json文件,读取数据,傻傻分不清...

    致Great
  • PHP JSON XML 相关函数

    json json_encode() 将 数组 编码为 json json_encode($value [, $options, $depth]); json...

    康怀帅
  • Python- Json模块

    py3study

扫码关注云+社区

领取腾讯云代金券