下面是一个在Scala中使用Apache Spark遍历DataFrame的行并通过MutableList创建新的DataFrame的示例代码:
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.sql.functions._
import scala.collection.mutable.ListBuffer
object DataFrameTraversalExample {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.appName("DataFrameTraversalExample")
.master("local")
.getOrCreate()
import spark.implicits._
// 创建示例DataFrame
val data = Seq(
("Alice", 25),
("Bob", 30),
("Charlie", 35)
)
val df = data.toDF("Name", "Age")
// 遍历DataFrame的行并通过MutableList创建新的DataFrame
val newRows = new ListBuffer[(String, Int)]()
df.collect().foreach(row => {
val name = row.getAs[String]("Name")
val age = row.getAs[Int]("Age")
val newName = name.toUpperCase()
val newAge = age + 10
newRows.append((newName, newAge))
})
val newDf = newRows.toDF("NewName", "NewAge")
newDf.show()
}
}
在上面的代码中,我们首先创建了一个示例DataFrame df
,其中包含两列:Name
和Age
。然后,我们通过遍历DataFrame的每一行,将每一行的Name
转换为大写,并将Age
增加10后添加到一个MutableList中。最后,我们使用toDF
方法将MutableList转换为新的DataFrame newDf
,并使用show
方法显示新的DataFrame的内容。
请注意,这种方法适用于处理较小的数据集。如果数据集非常大,可能需要考虑使用Spark的分布式计算能力来处理数据。
上一篇:Apache Spark/PySpark - 如何递增地计算列值?
下一篇:Apache Spark: java.lang.OutOfMemoryError: Java Heap Space问题