我正在使用以下方法将数据集写入json:
ds.coalesce(1).write.format("json").option("nullValue",null).save("project/src/test/resources")
对于具有空值的列的记录,json文档根本不会写该键。
有没有办法对json输出强制执行空值键?
这是必需的,因为我使用这个json将其读取到另一个数据集(在测试用例中)并且如果某些文档没有case类中的所有键(我正在通过放置json来读取它),则无法强制执行模式资源文件夹下的文件,并通过RDD [String]转换为数据集,如下所述:https://databaseline.bitbucket.io/a-quickie-on-reading-json-resource-files-in-apache-spark/)
答案 0 :(得分:3)
我同意@philantrovert。
ds.na.fill("")
.coalesce(1)
.write
.format("json")
.save("project/src/test/resources")
由于DataSets
是不可变的,因此您不会更改ds
中的数据,您可以在任何后续代码中处理它(包含空值和全部)。您只是在保存的文件中用空字符串替换空值。