sparkMap

s6fujrry  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(392)

我有一个读csv的rdd

val sampleRDD = sc.textFile(path)

csv如下所示:

col1 col2 col3 col4
    --------------------
    val1 val2 val3 val4
    val5 val6 val7 val8
    val9 val10 val3 val12
    val13 val14 val15 val16
    val17 val18 val3 val20
    val21 val22 val7 val24

对于col3,我有多个重复的值。我有Map。为了 val3 我希望输出值是 A ,用于 val7 我希望输出值是 B . 我希望输出像下面的一样。
不幸的是,我们仍然需要使用spark 1.0.0,并且需要使用RDD。

col1 col2 col3 col4
    --------------------
    val1 val2 A val4
    val5 val6 B val8
    val9 val10 A val12
    val13 val14 val15 val16
    val17 val18 A val20
    val21 val22 B val24

我该怎么做这样的转变呢

0vvn1miw

0vvn1miw1#

你只需制作一个自定义项并应用于该列:因此你的自定义项应该如下所示:

def getValue(s:String)=s match{
case "val13"=>"A"
case "val17"=>"B"
case _=>s
}

然后用这个函数做一个自定义项

val valueUdf= udf(getValue _)

现在应用这个自定义项来获得新的值输出

sampleRDD.withColumns("col3",valueUdf(sampleRDD("col3")))

这会给你想要的结果!
p、 s:代码没有经过测试,但它必须工作!

相关问题