spark sql list\u collect保留顺序

hs1rzwqc  于 2021-06-29  发布在  Hive
关注(0)|答案(0)|浏览(240)

我有一个包含两个字符串列(type,element)的表,对于每个类型,我希望将所有元素连接到一行上。
我可以通过collect\u list函数实现这一点:

val df = sc.parallelize(Seq(
  ("0", "p0"),
  ("0", "p2"),
  ("1", "p0"),
  ("1", "p8")
)).toDF("type", "element")

df.groupBy($"type")
  .agg(concat_ws(",", collect_list($"element")).alias("elements")).show

## +---------+---------------+

## | type    |       elements|

## +---------+---------------+

## |0        |p0,p2          |

## |1        |p0,p8          |

## +---------+---------------+

在这个例子中,输出保留了元素插入的顺序,但是,这个前提总是正确的吗?或者不能保证元素按顺序连接?i、 不同的执行可能导致元素列表中的顺序不同。如果后者是真的,我怎么能一直维持秩序?我需要一个带排序索引的新列吗?
谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题