![](/img/trans.png)
[英]Add values to a dataframe against some particular ID in Spark Scala
[英]Modify DataFrame values against a particular value in Spark Scala
查看我的代码:
val spark: SparkSession = SparkSession.builder().appName("ReadFiles").master("local[*]").getOrCreate()
val sc: SparkContext = spark.sparkContext
import spark.implicits._
var data: DataFrame = spark.read.option("header", "true")
.option("inferschema", "true")
.csv("Resources/atom.csv")
data.show()
数据如下:
ID Name City newCol1 newCol2
1 Ali lhr null null
2 Ahad swl 1 10
3 Sana khi null null
4 ABC xyz null null
新值列表:
val nums: List[Int] = List(10,20)
我想在ID=4
的地方添加这些值。 所以 DataFrame 可能看起来像:
ID Name City newCol1 newCol2
1 Ali lhr null null
2 Ahad swl 1 10
3 Sana khi null null
4 ABC xyz 10 20
我想知道这是否可能。 任何帮助将不胜感激。 谢谢
有可能,在这种情况下使用when otherwise
语句。
import org.apache.spark.sql.functions._
df.withColumn("newCol1",when(col("id") === 4,split(lit(nums.mkString(",")),",")(0)).otherwise(col("newCol1"))).
withColumn("newCol2",when(col("id") === 4,split(lit(nums.mkString(",")),",")(1)).otherwise(col("newCol2"))).
show()
//+---+----+----+-------+-------+
//| ID|Name|City|newCol1|newCol2|
//+---+----+----+-------+-------+
//| 1| Ali| lhr| null| null|
//| 2|Ahad| swl| 1| 10|
//| 3|Sana| khi| null| null|
//| 4| ABC| xyz| 10| 20|
//+---+----+----+-------+-------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.