Мы сохраняем искровый фрейм данных в HBase.Мы сталкиваемся с проблемой при перезаписи данных в hbase, когда столбец в обновленной строке имеет значение NULL, которое ранее не было 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».Но в этой строке все еще есть столбец «b» со значением «200».
Как решить эту проблему?