繁体   English   中英

更改 Spark 数据集中的值<Row>

[英]Change value in Spark Dataset<Row>

我有一个 Spark 数据集,我需要做的是遍历该数据集所有行中的所有值,并在满足某些条件时更改该值。

例如,我想将所有大于 5 的值更改为 0。因此我遍历数据集并将值更改为 0。

我的问题是我没有找到改变数据集中值的方法。 无论如何在Java中这样做。

您可以在 spark 中的withColumn或 dataset 中使用withColumnselect函数

这就是你在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")));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM