使用模式中的所有键(包括空列)向json写入一个spark数据集

时间:2017-07-21 10:42:01

标签: json scala apache-spark databricks

我正在使用以下方法将数据集写入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/

1 个答案:

答案 0 :(得分:3)

我同意@philantrovert。

ds.na.fill("")
  .coalesce(1)
  .write
  .format("json")
  .save("project/src/test/resources")

由于DataSets是不可变的,因此您不会更改ds中的数据,您可以在任何后续代码中处理它(包含空值和全部)。您只是在保存的文件中用空字符串替换空值。