|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文件,标题将是T U和W? 感谢。
答案 0 :(得分:1)
我认为唯一的解决方案就是编写自己的自定义TextBasedFileFormat,以处理与您类似的3行文字格式。
请参阅org.apache.spark.sql.execution.datasources.csv.CSVFileFormat获取灵感。
CSVFileFormat
可能可以轻松处理格式,空行为行分隔符。
答案 1 :(得分: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 |
+----------+----------------------------------------------------------------------------------+