如何在数据集中表示nulls,该数据集由案例类列表组成



我有一个案例类

final case class FieldStateData(
    job_id: String = null,
    job_base_step_id: String = null,
    field_id: String = null,
    data_id: String = null,
    data_value: String = null,
    executed_unit: String = null,
    is_doc: Boolean = null,
    mime_type: String = null,
    filename: String = null,
    filesize: BigInt = null,
    caption: String = null,
    executor_id: String = null,
    executor_name: String = null,
    executor_email: String = null,
    created_at: BigInt = null
)

我想用作类型数据集[fieldStatedAta]数据集的一部分,以最终将其插入数据库。所有列都需要无效。我将如何代表从任何而不是任何字符串的数字代表零类型?我考虑过使用选项[boolean]或类似的东西,但是在插入过程中或用作SQL查询时,它会自动取消盒子?

还请注意,以上代码不正确。布尔类型并非无效。这只是一个例子。

您在案例类中使用 option monad是正确的。该字段应在READ上被Spark未包装。

import org.apache.spark.sql.{Encoder, Encoders, Dataset}
final case class FieldStateData(job_id: Option[String],
                                job_base_step_id: Option[String],
                                field_id: Option[String],
                                data_id: Option[String],
                                data_value: Option[String],
                                executed_unit: Option[String],
                                is_doc: Option[Boolean],
                                mime_type: Option[String],
                                filename: Option[String],
                               filesize: Option[BigInt],
                               caption: Option[String],
                               executor_id: Option[String],
                               executor_name: Option[String],
                               executor_email: Option[String],
                               created_at: Option[BigInt])
implicit val fieldCodec: Encoder[FieldStateData] = Encoders.product[FieldStateData]
val ds: Dataset[FieldStateEncoder] = spark.read.source_name.as[FieldStateData]

当您将Dataset写回数据库时,None成为 null 值和Some(x)是存在的值。

相关内容

  • 没有找到相关文章

最新更新