下面是需要转换为spark scala的遗留代码的场景。任何提示都将不胜感激。
场景:需要使用“withcolumn”向dataframe/dataset添加一个新的列,前提是有条件地检查20-22个其他列的值,然后派生这个新的列值。关于如何在spark scala中实现这一点,有什么建议吗?非常感谢。我尝试过使用udf并将22列的Map作为key:value and 如果不是用可变变量进行检查,但被本论坛的Maven告知不建议这样做,那么寻求什么是实现这一点的正确方法的指导?
或者使用dataset.mappartitions并在函数中使用可变变量是正确的方法?
val calculate = dataset.mapPartitions(partition => partition.map(x => {
var value1 = "NA"
var value1 = "NA"
set the values of the mutable variables value1 and value2 based on the column values
if ( x.fieldA ="xyx")
{
value1 = "ABC"
value2 = "cbz
}
eles if (x.fieldA ="112" & x.fieldB ="xy1")
{
value1 = "zya"
value2 = "ab"
}
df(
x.fldC
x.fldB
value1
value2
)
}
case class df(fldc:String,fldb:String,value1:String:value2:String)
你能让我知道什么其他细节,我应该提供,因为我已经更新了上述问题?
我对分布式/spark scala开发还不熟悉,所以可能会问一些基本问题。
1条答案
按热度按时间vnzz0bqm1#
变型2