我们正在将spark数据帧保留到HBase中。 当更新的行中的列的值为null时,我们面临将数据覆盖到hbase中的问题,而之前该值不为null。
我们面临的问题如下: 首先,我们将数据帧插入到HBase中,如下所示:
val rowsList =Seq(Row("Acct1", "100", "1")Row("Acct2", "200", "2")).asJava
val schema: StructType =
StructType(List(StructField("a", StringType, true),
StructField("b", StringType, true),
StructField("c", StringType, true)))
val df: DataFrame = sparkSession.createDataFrame(rowsList, schema)
然后我们将此数据帧放入HBase,它可以按预期工作。
当我们如下覆盖现有的rowKey时:
val rowsList = Seq(Row("Acct2", null, "3")).asJava
val df: DataFrame = sparkSession.createDataFrame(rowsList, schema)
然后,此处列'c'的值将从'2'变为'3'。 但是此行仍具有值'200'的列'b'。
如何解决此问题?