如何解决用scala spark将随机的RDD值替换为空
我有一个包含将近15000条记录的csv文件。每行包含由制表符(\ t)划分的3种数据类型。我实际上想将第二列的值随机替换为null!也许我会保持8000不变,并将7000个值替换为null。
对scala(火花)有帮助吗?
解决方法
- 将数据读取为数据框
- 生成一个新列,例如
rnd
,它是一个从0到1的随机数 - 当
rnd
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新手,因此无法发表评论,因此需要一个单独的答案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。