scala - 写入仅具有键和 1 列模式的数据框时,将空值附加到 HBASE 表中的所有其他列以匹配键
问题描述
我正在尝试仅更新 1 列的主表 (HBASE),但发生的情况是受影响记录的所有其他列都填充了 null。有没有办法摆脱这种情况?
这是解释问题的示例代码片段和结果,
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|
+------+--------+
// MASTER 表中有 EMP_ID 匹配 45566,当我写它时,MASTER 表中的其他列填充为 null
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 附加空值。
解决方案
推荐阅读
- python - Django 2.1.5 以上版本:如何设置 urls.py 以允许 get 方法工作?
- java - 解析 Java 方法参数
- azure-application-insights - 如何更改 AppInsight 的自定义 EndpointAddress
- node.js - Nodemailer 无法正常工作 使用 Node 和 Express 的完整 React 和 Redux 项目
- ios - JSON ios不解析
- android - 通过套接字进行多次读写
- swift - 仅当在 `tableView (_: didSelectRowAt:)` 上调用 performSegue 时,才会出现“没有标识符的 segue”错误
- c# - 使用光线投射命中信息使游戏对象居中
- c# - 如何在c#中检测变量变化并获取变量的值
- video-streaming - SPICE 服务器在视频流检测中使用什么算法?