对于表1中的每一行,我尝试计算表2中的行,并根据表1中的值来满足条件。
表1中的年龄应介于表2的开始年龄和结束年龄之间,或等于开始年龄和结束年龄。
是否可以使用自定义项和withcolumn?我尝试了两种方法,比如使用withcolumn和带有自定义项的withcolumn,但两种方法都失败了。
def counter(a):
return table2.where((table2.StartAge <= a) & (table2.EndAge >=a)).count()
counter_udf = udf(lambda age: counter(age), IntegerType())
table1 = table1.withColumn('Count', counter_udf('Age ID'))
这有道理吗?谢谢。
输入和输出示例:
2条答案
按热度按时间of1yzvn41#
如果要在脚本中使用自定义项,必须首先向spark注册它。
使用这行代码有助于修复错误:
qaxu7uf22#
看看这个。您可以使用sparksql实现它。