如何使用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行数据进行分组。

所以一行将包含

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

可能吗?还是在那里将其制成一个CSV文件,标题将是U和W?谢谢。

我认为唯一的解决方案是编写自己的自定义textbasedfileformat,它将像您一样处理3行文本格式。

请参阅org.apache.spark.sql.execution.datasources.csv.csvfileformat Inspiration。


CSVFileFormat有可能用空行作为行分隔符轻松处理格式。

,如果您可以以以下数据框架格式获取行:

,则可以轻松合并行
+-------+--------------------+
|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                    |
+----------+----------------------------------------------------------------------------------+

相关内容

  • 没有找到相关文章

最新更新