我尝试将插入值插入Hive表中,如果每列都有值,则没有问题,但我需要在其中一列中插入NULL值。 我是这样做的:
val errorsToAlert = List(("source1", "table1","27-01-2002", null))
val data = sqlContext.createDataFrame(errorsToAlert).toDF("source",
"table_name", "open_date", "close_date")
data.write.mode("append").saveAsTable("management.alerts")
我尝试过NULL和None,但两者都代表了这个错误:
17/06/26 11:59:38错误yarn.ApplicationMaster:用户类扔了 例外:
scala.MatchError:scala.None.type(类 scala.reflect.internal.Types $ UniqueSingleType)
scala.MatchError:scala.None.type(类 scala.reflect.internal.Types $ UniqueSingleType)
答案 0 :(得分:2)
这个问题与Hive完全无关。如果您检查errorsToAlert
的类型,您会看到它是:
List[(String, String, String, Null)]
和scala.Null
不是Dataset
的可接受输入。
如果必需类型本身可以为空,则可以明确指定:
sqlContext.createDataFrame(Seq(
("source1", "table1","27-01-2002", null: String)
))
否则使用scala.Option
:
sqlContext.createDataFrame(Seq(
("source1", "table1","27-01-2002", None: Option[Int])
))