如何加载连续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? 谢谢。
回答:
我认为唯一的解决方案是编写自己的自定义TextBasedFileFormat,它可以处理像你的3行文本格式。
请参阅org.apache.spark.sql.execution.datasources.csv.CSVFileFormat以获取灵感。
可能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 |
+----------+----------------------------------------------------------------------------------+
以上是 如何加载连续3行的数据集被视为一个? 的全部内容, 来源链接: utcz.com/qa/258056.html