繁体   English   中英

针对 Spark Scala 中的特定值修改 DataFrame 值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM