我有一个列名列表,每次都不同。列名称存储在列表中。因此,我需要传递列表中的列名(在下面的示例中,其ID和ProgramID)以在源数据帧和目标数据帧之间进行比较。在下面的示例中,我要检查src_id == id
和src_programid == programid
。
from pyspark import SparkContext, SparkConf, SQLContext
from pyspark.sql.functions import col, when
srccolumns = ['src_id','src_programid']
tgtcolumns = ['id','programid']
joinSrcTgtAction = joinSrcTgt.withColumn(
'action',
when(
(
(col(src_id) == col(id)) &
(col(src_programid) == col(programid)) &
(joinSrcTgt.src_checksum != joinSrcTgt.checksum)
),
'upsert'
)
)
答案 0 :(得分:0)
假设列表大小相同并保证列名的顺序,那么我们可以按索引匹配一对,您可以执行以下操作:
var dbURI = "mongodb://localhost:27017/thenDBname"