1.背景知识
在sparksql中,如果想把某一列存储为json格式, 常用的有两种方法:
* 直接字符串拼接
* to_json
简单说下第二种方法
select cast(to_json(named_struct('test', 'a')) as string)
2. 问题
上面的方法在终端看得到的结果是:
{"test":"a"}
这是符合我们需求的,但是如果想存储下来,会看到结果被转义了,变为
"{\"test\":\"a\"}"
这显然不是我们需要的
3. 解决方案
在存储的时候增加配置option('escapeQuotes', False)