Python Dataframe列列出Pyspark中的保存顺序

Python Dataframe列列出Pyspark中的保存顺序,python,apache-spark,pyspark,apache-spark-sql,databricks,Python,Apache Spark,Pyspark,Apache Spark Sql,Databricks,我有一个Spark数据框,包含两列,“id”和“timetamp”。 如何将“id”列转换为按时间戳保存原始顺序的列表? 当我尝试收集时,顺序是不守恒的 谢谢您不能使用收集列表,因为它是一个组中元素的非确定性收集,请参见文档- /** * Aggregate function: returns a list of objects with duplicates. * * @note The function is non-deterministic because the or

我有一个Spark数据框,包含两列,“id”和“timetamp”。 如何将“id”列转换为按时间戳保存原始顺序的列表? 当我尝试收集时,顺序是不守恒的


谢谢

您不能使用
收集列表
,因为它是一个组中元素的非确定性收集,请参见文档-

/**
   * Aggregate function: returns a list of objects with duplicates.
   *
   * @note The function is non-deterministic because the order of collected results depends
   * on order of rows which may be non-deterministic after a shuffle.
   *
   * @group agg_funcs
   * @since 1.6.0
   */
  def collect_list(e: Column): Column = withAggregateFunction { CollectList(e.expr) }
在分布式计算中,按一定顺序收集元素是不可能的,因为数据是跨节点分布的。要实现这一点,您需要将数据收集到执行器上的单个分区,然后执行聚合<代码>这可能会导致执行器出现资源短缺。如果您知道您的数据数量较少,您可以使用
UDAF
将数据合并到
1

如果您有未倾斜的重新分区列,则可以以性能可靠的方式执行此操作


下面是一个根据cloudera的时间戳对值进行排序的好方法

您是否尝试过创建Pandas dataframe,按时间戳对其排序,并列出id列?