HBase + Spark: датафрейм помещен без замены существующих значений столбца нулевыми значениями для того же RowKey - PullRequest
0 голосов
/ 03 апреля 2019

Мы сохраняем искровый фрейм данных в 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».

Как решить эту проблему?

...