Spark-Scala:如何从DataFrame取首行并修改指定字段值
Spark DataFrame 操作解决方案
你尝试的代码val df1 = df.show(1)存在错误,show()方法仅用于打印数据,返回值为Unit,无法赋值给DataFrame变量。以下是正确的实现步骤:
1. 创建包含df1第一行数据的df2
使用limit(1)方法快速获取第一行数据:
val df2 = df1.limit(1)
若需严格确保取的是第一行(不依赖现有排序),可通过添加行号筛选:
import org.apache.spark.sql.functions.row_number import org.apache.spark.sql.expressions.Window val windowSpec = Window.orderBy(lit(1)) // 生成行号,无实际排序逻辑 val df2 = df1.withColumn("row_num", row_number().over(windowSpec)) .filter($"row_num" === 1) .drop("row_num")
2. 修改df2的region字段值为'Madrid'
通过withColumn方法替换字段值:
import org.apache.spark.sql.functions.lit val df2Updated = df2.withColumn("region", lit("Madrid"))
也可使用selectExpr实现:
val df2Updated = df2.selectExpr("*", "'Madrid' as region").drop("region")
内容的提问来源于stack exchange,提问作者pecar
相关产品推荐
相关产品推荐

