gpt4 book ai didi

scala - 我应该将 nullable 设置为 false 还是 true?

转载 作者:行者123 更新时间:2023-12-04 14:23:12 36 4
gpt4 key购买 nike

我在 spark 中有一个数据框,但我不明白 nullable属性意味着,我应该将其设置为 false 还是保持 true :

例如:

root
|-- user_id: long (nullable = true)
|-- event_id: long (nullable = true)
|-- invited: integer (nullable = true)
|-- day_diff: long (nullable = true)
|-- interested: integer (nullable = false)
|-- event_owner: long (nullable = true)
|-- friend_id: long (nullable = true)

最佳答案

Nullable 指示相关列是否可以为空。
它确保特定列不能为空(如果在 nullable 属性设置为 true 时它为空,Spark 将在数据帧的第一个操作期间启动 java.lang.RuntimeException)。

这里有一个示例,我们将第一行的值设置为 null 而此列的可空属性设置为 false :

import org.apache.spark.sql._
import org.apache.spark.sql.types._
val data = Seq(
Row(null, "a"),
Row(5, "z")
)

val schema = StructType(
List(
StructField("num", IntegerType, false),
StructField("letter", StringType, true)
)
)

val df = spark.createDataFrame(
spark.sparkContext.parallelize(data),
schema
)
df.show()

然后,您将遇到以下异常,即列 num 不能为空值:
java.lang.RuntimeException: Error while encoding: java.lang.RuntimeException: The 0th field 'num' of input row cannot be null.

PS:默认情况下可空值设置为true,您不必仅在您希望它为false时才设置它。

https://github.com/apache/spark/blob/3d5c61e5fd24f07302e39b5d61294da79aa0c2f9/sql/catalyst/src/main/scala/org/apache/spark/sql/types/StructField.scala#L39

我希望它有帮助

关于scala - 我应该将 nullable 设置为 false 还是 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51502894/

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