Я пытаюсь обновить основную таблицу (HBASE) только для 1 столбца, но происходит то, что все остальные столбцы для затронутых записей заполняются нулем.Есть ли способ уйти от этого?
Вот пример кода и результат, объясняющий проблему:
val DfEmpMaster = spark.read.format(BIGSQL).option("dbtable","EMP_MASTER_DETAIL").load()
DfEmpMaster.show()
+------+--------+--------+------------+
|EMP_ID|EMP_NAME|EMP_ROLE|EMP_LOCATION|
+------+--------+--------+------------+
| 13222| Steve| SDE| CAN|
| 23241| Victor| Arch| USA|
| 43233| Roger| MNGR| USA|
| 45566| Scott| SDE| UK|
| 54454|Karthick| SDE| India|
+------+--------+--------+------------+
val DfEmpRole = spark.read.format(BIGSQL).option("dbtable", "EMP_ROLE").load()
DfEmpRole.show()
+------+--------+
|EMP_ID|EMP_ROLE|
+------+--------+
| 45566| ARCH|
+------+--------+
// Существует совпадение EMP_ID в таблице MASTER для 45566, и когда я его пишу, другие столбцы в таблицах MASTER заполняются нулем
DfEmpRole.write.mode(SaveMode.Append).jdbc("EMP_MASTER_DETAIL")
// После обновления
val DfEmpMasterresult = spark.read.format(BIGSQL).option("dbtable", "EMP_MASTER_DETAIL").load()
DfEmpMasterresult.show()
+------+--------+--------+------------+
|EMP_ID|EMP_NAME|EMP_ROLE|EMP_LOCATION|
+------+--------+--------+------------+
| 13222| Steve| SDE| CAN|
| 23241| Victor| Arch| USA|
| 43233| Roger| MNGR| USA|
| 45566| null| ARCH| null|
| 54454|Karthick| SDE| India|
+------+--------+--------+------------+
EMP_NAME и EMP_LOCATION добавляются с нулем.