Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Spark更改所有数据集中的非数值?_Java_Loops_Apache Spark_Col - Fatal编程技术网

Java 如何使用Spark更改所有数据集中的非数值?

Java 如何使用Spark更改所有数据集中的非数值?,java,loops,apache-spark,col,Java,Loops,Apache Spark,Col,我使用的数据集有很多列,这个数据集有?在所有数据集中。我想用Spark(Java)来改变?到0。到目前为止,我只能用一个专栏来做这件事,但我想在任何地方都做: Dataset<Row> csvData = spark.read() .option("header", false) .option("inferSchema", true) .option("maxColumns", 50000)

我使用的数据集有很多列,这个数据集有?在所有数据集中。我想用Spark(Java)来改变?到0。到目前为止,我只能用一个专栏来做这件事,但我想在任何地方都做:

    Dataset<Row> csvData = spark.read()
            .option("header", false)
            .option("inferSchema", true)
            .option("maxColumns", 50000)
            .csv("src/main/resources/K9.data");

    csvData = csvData.withColumn("_c5409", when(col("_c5409").isNull(),0).otherwise(col("_c5409")) )
        .withColumn("_c0", when(col("_c0").equalTo("?"),0).otherwise(col("_c0")) );
Dataset csvData=spark.read()
.选项(“标题”,false)
.option(“推断模式”,true)
.选项(“maxColumns”,50000)
.csv(“src/main/resources/K9.data”);
csvData=csvData.withColumn(“\u c5409”),当(col(“\u c5409”).isNull()时为0。否则为(col(“\u c5409”))
.with列(“\u c0”,当(col(“\u c0”)。equalTo(“?”,0)。否则(col(“\u c0”));

也许这有一个简单的解决方案,我是Java和Spark的新手:)

您可以使用when创建列列表,并在select中使用它来处理复杂的if和else情况

List<org.apache.spark.sql.Column> list = new ArrayList<org.apache.spark.sql.Column>();
for( String col : csvData.columns()){
    list.add(when(csvData.col(col).isNull(),0).otherwise(csvData.col(col)).alias(col));
}
csvData = csvData.select(list.toArray(new org.apache.spark.sql.Column[0]));

csvData = csvData.na().fill(0, df.columns());