我需要编写一个动态scala类。它将以三个参数作为输入。输入Dataframe、要分解的列列表和分隔符。假设我有下面的Dataframe。
DataBase TableName Value
dbdev table1_name Value1#Value2#Value3
爆炸后,我预期的结果如下
DataBase TableName Value Value_Exploded
dbdev table1_name Value1#Value2#Value3 Value1
dbdev table1_name Value1#Value2#Value3 Value2
dbdev table1_name Value1#Value2#Value3 Value3
所以我的问题是如何编写一个scala类来实现上述功能。约束是,它必须是泛型的。它可能得到不同的Dataframe。需要分解(多个)的列需要传递。
我能够做到这一点,当我只需要爆炸一列。请在下面找到-
val explodeColumnName = "Value" //column which i need to explode
val explodeColumnBy = "#" //delimiter
val explodeDF = df.select(df.col("*"), explode(split(col(explodeColumnName), s"$explodeColumnBy")).as (explodeColumnName+"_Exploded"))
但当我需要动态分解多个列时,我失败了。比方说,我需要分解Dataframedf的4列。
任何帮助/建议/建议都非常好。
谢谢您!
1条答案
按热度按时间8yparm6h1#
检查以下代码。
导入所需库
定义
DFHelper
班级。注意-不要使用
explode
作为内部函数名DFHelper
班级,explode
在内置函数中已经可用,所以我使用explodeM
作为功能。