2017-12-02 79 views
3
|T 2009-08-26 17:1...| 
|U http://twitter....| 
|  W No Post Title| 
|     | 
|T 2009-11-01 02:4...| 
|U http://twitter....| 
|  W No Post Title| 
|     | 
|T 2009-11-18 16:5...| 
|U http://twitter....| 
|  W No Post Title| 
|     | 

现在我有这样的数据 我想分组每4行数据。如何加载连续3行的数据集被视为一个?

所以一个行将包含

T 2009-X-XX U http://xxxx  W xxxxxxx" 

这可能吗? 或者有没有办法把它变成一个csv文件,头文件是T U和W? 谢谢。

+0

的格式是一致的,它包含一个空行每3行(应该被认为是一个)? –

回答

1

你可以很容易地合并行,如果你可以在下面的数据帧格式,让他们:

+-------+--------------------+ 
|line_nr|    line| 
+-------+--------------------+ 
|  0|T 2009-08-26 17:...| 
|  1|U http://twitter...| 
|  2|  W No Post Title| 
|  3|     | 
|  4|T 2009-11-01 02:...| 
|  5|U http://twitter...| 
|  6|  W No Post Title| 
|  7|     | 
|  8|T 2009-11-18 16:...| 
|  9|U http://twitter...| 
|  10|  W No Post Title| 
|  11|     | 
+-------+--------------------+ 

的你可以这样做:

df 
    .groupBy((floor(($"line_nr")/4)).as("line_group")) 
    .agg((concat_ws("", collect_list($"line"))).as("line")) 
    .show(false) 

+----------+----------------------------------------------------------------------------------+ 
|line_group|line                    | 
+----------+----------------------------------------------------------------------------------+ 
|0   |T 2009-08-26 17:1...U http://twitter....  W No Post Title     | 
|1   |T 2009-11-01 02:4...U http://twitter....  W No Post Title     | 
|2   |T 2009-11-18 16:5...U http://twitter....  W No Post Title     | 
+----------+----------------------------------------------------------------------------------+