如果使用spark满足特定条件而不将目标读入数据帧,是否可以覆盖目标中的记录?例如,我知道如果将两组数据加载到数据帧中,我们可以这样做,但我想知道是否有办法在不将目标加载到数据帧的情况下执行此操作。基本上,这是一种指定覆盖/更新条件的方法。
我猜不是,但我想在进入这个项目之前我会问。我知道我们有append和overwrite的写选项。我真正想要的是,如果数据目标中已存在一些特定列,则覆盖它并用新数据填充其他列。例如:
File1中:
id,name,date,score
1,John,"1-10-17",35
2,James,"1-11-17",43
文件2:
id,name,date,score
3,Michael,"1-10-17",23
4,James,"1-11-17",56
5,James,"1-12-17",58
我希望结果如下:
id,name,date,score
1,John,"1-10-17",35
3,Michael,"1-10-17",23
4,James,"1-11-17",56
5,James,"1-12-17",58
基本上,Name和Date列在此方案中就像主键一样。我希望基于匹配的那两列进行更新,否则创建新记录。正如您所看到的,id 4会覆盖id 2,但是id 5会附加,因为日期列不匹配。先谢谢你们!