使用行分隔符拆分 Spark 数据帧

Posted

技术标签:

【中文标题】使用行分隔符拆分 Spark 数据帧【英文标题】:Split a spark dataframe with row delimiter 【发布时间】:2016-06-20 09:49:53 【问题描述】:

这是我的数据框

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

我假设如果我得到单独的数据帧,我也可以组合其他值,例如 this..

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

这可能吗。最好的方法是什么?

【问题讨论】:

这里可以使用spark聚合函数吗?我仍在弄清楚语义。如果有人尝试过,请告诉我。 【参考方案1】:

感谢https://***.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")

【讨论】:

以上是关于使用行分隔符拆分 Spark 数据帧的主要内容,如果未能解决你的问题,请参考以下文章

Spark将逗号分隔的行数组拆分为第一个值,其余的[重复]

使用 python 和“|”将 spark 数据帧写入文件分隔符

如何通过 Delimiter 拆分 Spark RDD 的行

按行索引拆分 Spark 数据帧

如何基于多个空格字符将文本文件拆分为 2 列作为 scala spark 的分隔符

Pyspark 数据帧拆分并将分隔列值填充到 N 索引数组中