Spark DataFrame: groupBy após orderBy mantém essa ordem?

Eu tenho um quadro de dados Spark 2.0example com a seguinte estrutura:

id, hour, count
id1, 0, 12
id1, 1, 55
..
id1, 23, 44
id2, 0, 12
id2, 1, 89
..
id2, 23, 34
etc.

Ele contém 24 entradas para cada identificação (uma para cada hora do dia) e é ordenado por identificação, hora, usando a função orderBy.

Eu criei um agregadorgroupConcat:

  def groupConcat(separator: String, columnToConcat: Int) = new Aggregator[Row, String, String] with Serializable {
    override def zero: String = ""

    override def reduce(b: String, a: Row) = b + separator + a.get(columnToConcat)

    override def merge(b1: String, b2: String) = b1 + b2

    override def finish(b: String) = b.substring(1)

    override def bufferEncoder: Encoder[String] = Encoders.STRING

    override def outputEncoder: Encoder[String] = Encoders.STRING
  }.toColumn

Isso me ajuda a concatenar colunas em seqüências de caracteres para obter esse quadro de dados final:

id, hourly_count
id1, 12:55:..:44
id2, 12:89:..:34
etc.

Minha pergunta é, se eu fizerexample.orderBy($"id",$"hour").groupBy("id").agg(groupConcat(":",2) as "hourly_count"), isso garante que as contagens por hora serão ordenadas corretamente em seus respectivos baldes?

Eu li que esse não é necessariamente o caso dos RDDs (consulteFaísca classificar por chave e, em seguida, agrupar para ser ordenado iterável?), mas talvez seja diferente para DataFrames?

Caso contrário, como posso contornar isso?

questionAnswers(5)

yourAnswerToTheQuestion