如何为特定行的数据集中的现有列添加值

问题描述

"ds" 是具有现有列 inpMap 的数据集类型。需要知道如何将特定行的值添加到数据集的这一列

 for (int i = 0; i < size; i++){
        
                         String propMap = "abc";
        
                         if(propMap != null){
                             String inpMap = colMap.get(propMap); // where colMap is dictionary
                             ds= ds.withColumn(inpMap,"test"); // ??? how to do here...as withCol adds new col. And I have this col existing in "ds" Dataset.
                         }
                     }

解决方法

使用 Spark 时,最好尝试可视化创建列而不是行的转换。这使得构建逻辑更容易。

根据您的代码,我假设变量 "propMap" 是不变的。您只需按如下方式编写转换:

import org.apache.spark.sql.functions.lit;

String inpMap = colMap.get(propMap);
dsWithTestColumn = ds.withColumn("test",lit(inpMap));

另外,我假设您将 Java API 与 Apache Spark 一起使用。