小编Coo*_*son的帖子

如何使用 LIKE 运算符作为 pyspark 中的 JOIN 条件作为列

我想在 pyspark 中执行以下操作(对于 AWS Glue 作业):

JOIN a and b ON a.name = b.name AND a.number= b.number AND a.city LIKE b.city
Run Code Online (Sandbox Code Playgroud)

例如:

表一:

数字 姓名 城市
1000 鲍勃 %
2000年 伦敦

表b:

数字 姓名 城市
1000 鲍勃 波士顿
1000 鲍勃 柏林
2000年 巴黎

结果

数字 姓名 城市
1000 鲍勃 波士顿
1000 鲍勃 柏林

所以我不知道该怎么做的部分是实现通配符“%”并使用 LIKE 运算符。我知道你可以.like()在字符串上使用,例如:

df.where(col('col1').like("%string%")).show()
Run Code Online (Sandbox Code Playgroud)

但它需要一个字符串,在我的例子中我想把它作为一个列。像下面这样:

result = a.join(
    b,
    (a.name == b.name) &
    (a.number == b.number) &
    (a.city.like(b.city)) # <-- This doesnt work …
Run Code Online (Sandbox Code Playgroud)

python apache-spark apache-spark-sql pyspark aws-glue

6
推荐指数
1
解决办法
6833
查看次数