我在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)
答案 0 :(得分:2)
Nullable指示相关列是否可以为null。 这样可以确保特定的列不能为null(如果nullable属性设置为true时为null,Spark将在对数据帧的第一个操作期间启动java.lang.RuntimeException。)
这里是一个示例,其中我们将第一行的值设置为null,而此列的nullable属性设置为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时才设置它。
我希望对您有帮助