我正在使用一個(gè)包含很多列的數(shù)據(jù)集,這個(gè)數(shù)據(jù)集有?在所有數(shù)據(jù)集中。我想用 Spark (Java) 來改變 ? 到 0。到目前為止,我只能用一列做到這一點(diǎn),但我想在任何地方都這樣做: 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")) );也許這有一個(gè)簡單的解決方案,我是 Java 和 Spark 的新手 :)
1 回答

UYOU
TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用 when 創(chuàng)建列列表,并在 select 中使用它是否必須處理復(fù)雜的 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());
添加回答
舉報(bào)
0/150
提交
取消