Spark join-匹配长列表中的任意列
我需要连接两个表,条件是表中的一列匹配一个很长列表中的任何列,即:Spark join-匹配长列表中的任意列,join,pyspark,pyspark-sql,Join,Pyspark,Pyspark Sql,我需要连接两个表,条件是表中的一列匹配一个很长列表中的任何列,即: columns = ['name001', 'name002', ..., 'name298'] df = df1.join(df2, (df1['name']==df2['name1']) | (df1['name']==df2['name2']) | ... | df1['name']==df2['name298']) 我如何在Pyspark中实现这个连接,而不编写长条件?非常感谢 您可以在列列表上使用循环来构建连接表达
columns = ['name001', 'name002', ..., 'name298']
df = df1.join(df2, (df1['name']==df2['name1']) | (df1['name']==df2['name2']) | ... | df1['name']==df2['name298'])
我如何在Pyspark中实现这个连接,而不编写长条件?非常感谢 您可以在
列
列表上使用循环来构建连接
表达式:
join_expr=(df1[“name”]==df2[列[0]]
对于[1:]列中的c:
join_expr=join_expr |(df1[“name”]==df2[c])
或者使用functools.reduce
:
从functools导入reduce
join_expr=reduce(
lambda e,c:e |(df1[“name”]==df2[c]),
列[1:],
df1[“名称”]==df2[列[0]]
)
现在使用join\u expr
加入:
df=df1.join(df2,on=join\u expr)