【问题标题】:Modify DataFrame values against a particular value in Spark Scala根据 Spark Scala 中的特定值修改 DataFrame 值
【发布时间】:2020-08-18 05:10:11
【问题描述】:

查看我的代码:

val spark: SparkSession = SparkSession.builder().appName("ReadFiles").master("local[*]").getOrCreate()

import spark.implicits._

val 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

我想知道这是否可能。任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: scala dataframe apache-spark apache-spark-sql


    【解决方案1】:

    有可能,在这种情况下使用 when otherwise 语句。

    import org.apache.spark.sql.functions._
        
    df.withColumn("newCol1", when(col("id") === 4, lit(nums(0))).otherwise(col("newCol1")))
      .withColumn("newCol2", when(col("id") === 4, lit(nums(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|
    //+---+----+----+-------+-------+
    

    【讨论】:

    • 是否涉及进口?
    • @AyezaMalik,导入功能应该足够好了...import org.apache.spark.sql.functions._
    猜你喜欢
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 2020-04-22
    • 1970-01-01
    • 2019-07-02
    • 2021-06-22
    • 1970-01-01
    相关资源
    最近更新 更多