我有一个数据框和查找数据框,我想通过将N作为参数传递给函数joinByColumn来将inputDf与我的lookupDf联接N次,因为N成为联接条件之一。输出也应该是inputDf和lookupDf中选定列的组合。
我可以通过foldLeft函数来实现,但是我想使用map或iterator函数来实现
val result = (0 to n).foldLeft(inputDf) {
case (df, colName) => joinByColumn(colName.toString(), df).toDF()
}
def joinByColumn( value: String, inputDf: DataFrame): DataFrame = {
val lookupDF= readFromCassandraTableAsDataFrame(sqlContext,"keyspace","table")
inputDf.as("src").join(lookupDF,lookupDF("a").equalTo(inputDf("input_a")) && lookupDF("b").equalTo((value.toInt + 1).toString) ], "left")
.select("src.*", "c")
.withColumnRenamed("c", value)
}
我希望输出为包含所有连接列的datframe。