我需要阅读json输入并产生json输出。大多数字段是单独处理的,但是只需保留几个json子对象。
当Spark读取数据帧时,它将记录转换为行。行是一个类似于json的结构。可以将其转换并写到json中。
但是我需要将一些子json结构分解为字符串以用作新字段。
可以这样完成:
dataFrameWithJsonField = dataFrame.withColumn("address_json", to_json($"location.address"))
location.address
是传入的基于json的数据框的子json对象的路径。address_json
是该对象的列名,该列名转换为json的字符串版本。
to_json
在Spark 2.1中实现。
如果使用json4s生成输出json,则应将address_json解析为AST表示,否则输出json将转义address_json部分。