gpt4 book ai didi

csv - 在 Spark 2.0.1 中读写空字符串 ""vs NULL

转载 作者:行者123 更新时间:2023-12-03 22:39:20 25 4
gpt4 key购买 nike

CSVFileFormat似乎将空值读取和写入字符串列的空值。我四处搜索,但一直无法找到有关此的明确信息,因此我整理了一个简单的测试。

val df = session.createDataFrame(Seq(
(0, "a"),
(1, "b"),
(2, "c"),
(3, ""),
(4, null)
))

df.coalesce(1).write.mode("overwrite").format("csv")
.option("delimiter", ",")
.option("nullValue", "unknown")
.option("treatEmptyValuesAsNulls", "false")
.save(s"$path/test")

这输出:
0,a
1,b
2,c
3,unknown
4,unknown

因此,它似乎同时处理空字符串和 null值为 null .读取带有空引用字符串和空值的 CSV 文件时会发生同样的事情。目前有什么方法可以区别对待这些吗?

最佳答案

仅仅两年半之后,空字符串不再被认为等于 null感谢 Spark 2.4.0 !见 this commit for a bit of detail关于功能。您的代码将在 2.4.0+ 下按预期运行:

val df = session.createDataFrame(Seq(
(0, "a"),
(1, "b"),
(2, "c"),
(3, ""),
(4, null)
))

df.coalesce(1).write.mode("overwrite").format("csv")
.option("delimiter", ",")
.option("nullValue", "unknown")
.option("treatEmptyValuesAsNulls", "false")
.save(s"$path/test")
结果是:
0,a
1,b
2,c
3,
4,unknown

关于csv - 在 Spark 2.0.1 中读写空字符串 ""vs NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41069589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com