繁体   English   中英

将 RDD 值随机替换为 null 与 scala spark

[英]Replace randomly RDD values to null with scala spark

我有一个包含近 15000 条记录的 csv 文件。 每行包含 3 种类型的数据,由制表符 (\t) 分隔。 我实际上想将第二列值随机替换为 null。 也许我会保持 8000 不变并将 7000 值替换为 null。

scala(火花)有什么帮助吗?

这是它的样子: 在此处输入图像描述

  1. 读取数据为 dataframe
  2. 生成一个新列rnd ,它是一个从 0 到 1 的随机数
  3. rnd < 0.5 时使 col2 = col2 (如果你想让 50% 的值为空)否则 null
import org.apache.spark.sql.functions.{lit, rand, when}
import spark.implicits._

spark.read.option("header", "true").option("sep", "\t").csv(<your_path>)
.withColumn("rnd", rand())
.withColumn("col2", when($"rnd" < 0.5, $"col2").otherwise(lit(null).cast(<col2_datatype_here>)))

@amelie,请注意我的答案中“rnd”前面的$条件。

您应该进行列比较,而不是值比较。

PS :由于我是stackoverflow新手,无法发表评论,因此需要单独回答。

暂无
暂无

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

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