使用行分隔符拆分火花数据帧

时间:2016-06-20 09:49:54

标签: apache-spark dataframe apache-spark-sql rdd spark-dataframe

这是我的数据框架 enter image description here

此数据框处理的基本RDD使用索引压缩。我想将这个原始数据帧拆分成多个数据帧,其中分隔符基于第一个列字符串(例如,在这种情况下为“GCKN”)。

我假设如果我得到了各个数据帧,我也可以将其他值组合起来,比如这个..

A                                                    F     G
GCKN:GCKN_cppr0/in:GCKN_cppr0/out:GCKN_cppr15/in..  -71    531

这可能吗?这样做的最佳方式是什么?

1 个答案:

答案 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")