title: Does collect_list() maintain relative ordering of rows?
body: <p>Imagine that I have the following DataFrame df:</p>
  
  <pre><code>+---+-----------+------------+
  | id|featureName|featureValue|
  +---+-----------+------------+
  |id1|          a|           3|
  |id1|          b|           4|
  |id2|          a|           2|
  |id2|          c|           5|
  |id3|          d|           9|
  +---+-----------+------------+
  </code></pre>
  
  <p>Imagine that I run:</p>
  
  <pre><code>df.groupBy("id")
    .agg(collect_list($"featureIndex").as("idx"),
         collect_list($"featureValue").as("val"))
  </code></pre>
  
  <p>Am I <strong>GUARANTEED</strong> that "idx" and "val" will be aggregated and keep their relative order? i.e.</p>
  
  <pre><code>GOOD                   GOOD                   BAD
  +---+------+------+    +---+------+------+    +---+------+------+
  | id|   idx|   val|    | id|   idx|   val|    | id|   idx|   val|
  +---+------+------+    +---+------+------+    +---+------+------+
  |id3|   [d]|   [9]|    |id3|   [d]|   [9]|    |id3|   [d]|   [9]|
  |id1|[a, b]|[3, 4]|    |id1|[b, a]|[4, 3]|    |id1|[a, b]|[4, 3]|
  |id2|[a, c]|[2, 5]|    |id2|[c, a]|[5, 2]|    |id2|[a, c]|[5, 2]|
  +---+------+------+    +---+------+------+    +---+------+------+
  </code></pre>
  
  <p>NOTE: e.g. It's BAD because for id1 [a, b] should have been associated with [3, 4] (and not [4, 3]). Same for id2</p>