我想在pyspark中执行以下操作(用于aws胶水作业):
JOIN a and b ON a.name = b.name AND a.number= b.number AND a.city LIKE b.city
例如:
表a:
numbernamecity1000bob%2000joelondon公司
表b:
2000年的1000个Bobber到1000个Bobber
结果
编号:1000Bobberston1000Bobberlin
所以我不知道怎么做的部分是实现通配符“%”,并使用like运算符。我知道你可以用 .like()
在字符串上,例如:
df.where(col('col1').like("%string%")).show()
但它需要一个字符串,在我的例子中,我希望它作为一个列。如下所示:
result = a.join(
b,
(a.name == b.name) &
(a.number == b.number) &
(a.city.like(b.city)) # <-- This doesnt work since it is not a string
任何帮助做这将是非常感谢!
1条答案
按热度按时间vq8itlhq1#
尝试使用表达式:
我想你是故意的
b like a
而不是a like b
因为%
在表a中。