如何在Apache spark中对joinExpression进行算术运算

时间:2017-12-23 13:34:59

标签: scala apache-spark

我目前正尝试将df1与df2连接,其中每个数据框都有一个名为distance的列,以米为单位进行测量。我想加入这两个dataframes.distance之间的差异是< = 10米

的地方

像这样的东西 def1.join(df2, df1("distance") - df2("distance") <= 10).show()

我试图查找API文档,但我找不到足够的示例。

1 个答案:

答案 0 :(得分:1)

您可以在联接中使用udf来实现此目的。

val df1 = sc.parallelize(Array(1,2,3)).toDF("distance1")
val df2 = sc.parallelize(Array(10,12,14)).toDF("distance2")

val distanceUdf = spark.udf.register("distanceUdf", ( in1 : Int, in2 : Int)  => {
    Math.abs(in1 - in2)
})
df1.join(df2, distanceUdf(col("distance1"), col("distance2")) <= 10, "inner").show()