【问题标题】:Database DataFrame Null values not coming to Json File数据库 DataFrame Null 值未进入 Json 文件
【发布时间】:2019-12-10 21:13:01
【问题描述】:

我有一个在某些列中包含空值的数据库,并且我正在将由数据库形成的数据框转换为 Json 文件。这里的问题是我没有得到空列。这是代码和输出:

            dataFrame.show();
            dataFrame.na().fill("null").coalesce(1)
            .write()
            .mode("append")
            .format("Json")
            .option("nullValue", "")
            .save("D:\\XML File Testing\\"+"JsonParty1");

dataframe.show() 给出以下输出:

[![spark 处理的数据帧][1]][1]

             [1]: https://i.stack.imgur.com/XxAQC.png

这是它在文件中的保存方式(我仅粘贴 1 列只是为了向您展示示例):

           {"EMPNO":7839,"ENAME":"KING","JOB":"PRESIDENT","HIREDATE":"1981-11-17T00:00:00.000+05:30","SAL":5000.00,"DEPTNO":10}

您可以看到我的“MGR”和“comm”列丢失了,因为它在数据框中显示为空。令人惊讶的是,当数据帧由包含空值的文件(结构化,示例:分隔的 txt 文件)形成时,这个东西会起作用(火花数据帧将其视为空值)。尝试了各种方法,但仍然无法在 Json 文件中获取空列。任何帮助将不胜感激。

【问题讨论】:

标签: java json dataframe apache-spark


【解决方案1】:

试试这个:

import org.apache.spark.sql.functions._
dataFrame.withColumn("json", to_json(struct(dataFrame.columns.map(col):_*)
    .select("json").write.mode("append").text("D:\\XML File Testing\\"+"JsonParty1")

【讨论】:

  • 地图中作为参数使用的 col 是什么。它给了我错误,因为变量没有解决。你能提供更多信息吗?
  • 也表示columns()不存在map()。
  • 这段代码在 Scala 中。如果您需要 Java,您可以使用 Intellij 将其转换为 Java。
  • 我无法在我的工作场所安装 intellij,我可以获取用于编译的 java 代码吗?
  • 我不熟悉 Java API,但这里的想法是创建包含所有列的 struct 列并将其转换为 json。并且,最后选择 json 列并保存为文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
  • 2021-01-05
  • 2021-03-11
  • 2019-08-06
相关资源
最近更新 更多