ReadFile并保持订单一致

时间:2017-09-11 08:31:06

标签: scala apache-spark

我正在阅读日志文件,每一行都提供一个时间戳。在日志文件中,顺序始终是正确的,但可以有多个相同时间戳的实例。如果我们查看下面的小例子,我想确保每当我使用数据集Start时都会在RecStart之前查看。 (这并不反映我的实际数据/状态可能性)

system1;2017-07-04T08:33:26;Start;Start execution
system1;2017-07-04T08:33:26;RecStart;Start recorder

我从spark.read.textFile(file.path)

的文件中读取

我读过monotonically_increasing_id,但不能保证ID是连续的 我读到groupBy没有义务保持秩序。 partitionBy是否相同?如果partitionBy始终保持订单正确,则以下命令应解决我的问题  val ds2 = ds .withColumn("rn",row_number.over(Window.partitionBy($"systemname").orderBy($"timestamp")

我还考虑过在读取文件时将当前时间的毫秒加到时间戳上,但由于并行性,这似乎也不会保存。

有没有办法确保订单与文本文件中的顺序相同?

0 个答案:

没有答案