Вы можете использовать операторы case с левым соединением для обновления той же таблицы.
Например: у меня ниже таблица кустов с некоторыми записями теста:
desc test;
OK
account_id string
country string
date_id string
789 Korea 20190728
567 Japan 20180612
345 Mexico 20160612
123 USA 20190715
456 Mexico 20190726
spark.sql("""
Insert overwrite table db.test
select
coalesce(acc_num,account_id)
,coalesce(country_code,country)
,coalesce(loaded_date,date_id)
from
db.test TAB1
LEFT JOIN
(
select
account_id as acc_num
,CASE
WHEN country = 'Mexico'
THEN 'Updated'
WHEN country = 'Korea'
THEN 'Updated'
ELSE country
END as country_code
,date_id as loaded_date
from db.test
where account_id in (123,456,345,789)
) TAB2
on TAB2.acc_num = TAB1.account_id """)
>>> df=spark.table("db.test")
>>> df.show()
+----------+-------+--------+
|account_id|country| date_id|
+----------+-------+--------+
| 789|Updated|20190728|
| 567| Japan|20180612|
| 345|Updated|20160612|
| 123| USA|20190715|
| 456|Updated|20190726|
+----------+-------+--------+