我有一个Spark数据集,我需要做的是遍历该数据集所有行中的所有值,并在满足某些条件时更改值。
例如,我想将所有大于 5 的值更改为 0。所以我遍历数据集并将值更改为 0。
我的问题是我找不到更改数据集中值的方法。无论如何,在 Java 中可以这样做吗?
可以在 Spark 中的数据帧或数据集中使用withColumn
或select
函数
这就是你在scala中可以做到的方法,我希望你能用Java转换它
//dummy dataframe with two column id and value
val df = Seq(
("a", 1),
("b", 4),
("c", 2),
("d", 6),
("e", 10),
("f", 11)
).toDF("id", "value")
//Now this will change the all value with greater than 5 to 0
val newDF = df.withColumn("value", when($"value" > 5, 0).otherwise($"value"))
与select
相同
val newDF = df.select($"id", when($"value" > 5, 0).otherwise($"value").as("value"))
输出:
+---+-----+
|id |value|
+---+-----+
|a |1 |
|b |4 |
|c |2 |
|d |0 |
|e |0 |
|f |0 |
+---+-----+
我希望这有帮助!
按照Shankar Koirala的建议,以下是相同的Java解决方案:
dataSet = dataSet.withColumn("value",when(col("value").gt(5),0).otherwise(col("value")));