此数据框处理的基本RDD使用索引压缩。我想将这个原始数据帧拆分成多个数据帧,其中分隔符基于第一个列字符串(例如,在这种情况下为“GCKN”)。
我假设如果我得到了各个数据帧,我也可以将其他值组合起来,比如这个..
A F G
GCKN:GCKN_cppr0/in:GCKN_cppr0/out:GCKN_cppr15/in.. -71 531
这可能吗?这样做的最佳方式是什么?
答案 0 :(得分:0)
感谢https://stackoverflow.com/a/32750733/1384205 我通过将rdd映射到UDF来实现这一点。
添加了行ID。这将在找到分隔符时增加id
.map(x => {
if(flag==true) cnt+=1
if(x.startsWith("GCKN,")){ flag=true } else flag=false
(cnt + "," + x)
})
接着是
val eprGroupedDF1 = eprDF1
.groupBy("sIndex")
.agg(GroupConcat(eprDF1.col("A")),sum("B").alias("B"))
.sort("sIndex")