通过传递1到n作为参数并将数据帧作为函数的输出来调用函数n次

时间:2019-04-19 23:19:36

标签: scala iterator

我有一个数据框和查找数据框,我想通过将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。

0 个答案:

没有答案