Scala:如何在循环中组合数据帧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala:如何在循环中组合数据帧相关的知识,希望对你有一定的参考价值。

我想在递归方法中做数据帧的联合。

我在递归方法中进行一些计算并过滤数据并存储在一个变量中。在第二次迭代中,我将进行一些计算,然后我将数据存储在同一个变量中。当我第二次调用方法时,我的第一个结果消失了。理想的是我必须将结果存储在一个临时变量中,我需要做所有结果的联合,直到递归方法完成其执行。

df中的迭代1输出:

Col1   
    14      
    35    

迭代中的迭代2输出:

Col1
    18      
    20

现在我需要最终输出为,

Col1
    14
    35
    18
    20

码:

def myRecursiveMethod(first: List[List[String]],
                        Inputcolumnsdummy: List[List[String]],
                        secondInputcolumns: List[List[String]] = {

  val ongoingResult = doSomeCalculation(first,Inputcolumnsdummy, secondInputcolumns)
}

我希望我的代码应该像下面这样,

def myRecursiveMethod(first: List[List[String]],
                        Inputcolumnsdummy: List[List[String]],
                        secondInputcolumns: List[List[String]]) = {

    val ongoingResult = doSomeCalculation(first, Inputcolumnsdummy, secondInputcolumns)
    Val temp = temp.union(ongoingResult)
}
答案

你应该尝试:像这样使用uniondf1.union(df2)df1.union(computation(df2,...))

示例如下:

def doCompute(df: DataFrame): DataFrame = {
    val tmp: DataFrame = ... // TODO: call to your computation method
    tmp.show()
    df.union(tmp)
}

val df1: DataFrame = ...
val df2: DataFrame = ...
val df3: DataFrame = ...

var union_df: DataFrame = df1.union(doCompute(df2)).union(doCompute(df3))

在你的问题中我不明白的一件事是你的函数myRecursiveMethod如何递归?根据定义,递归函数会调用自身。不确定你的问题是否真的很清楚。

以上是关于Scala:如何在循环中组合数据帧的主要内容,如果未能解决你的问题,请参考以下文章

如何在for和if循环中获取spark scala数据帧的最后一行的第一列值

如何使用 for 循环组合多个数据帧?

在 Spark Scala 中动态创建数据帧

如何在 Scala 中连接两个数据帧并通过索引从数据帧中选择几列?

如何在 Scala 中将数据帧转换为 Apache Spark 中的数据集?

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?