HBase + Spark:Dataframe不会将相同的RowKey的现有列值替换为空值

时间:2019-04-03 13:01:54

标签: apache-spark hbase cloudera cloudera-cdh

我们正在将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'。

如何解决此问题?

0 个答案:

没有答案