Apache spark 从Spark limit()函数重新划分数据帧
我需要使用Apache spark 从Spark limit()函数重新划分数据帧,apache-spark,time,pyspark,Apache Spark,Time,Pyspark,我需要使用limit函数从数据帧中获取n个条目/行。我知道这是不可取的,但这是一个预处理步骤,在实际实现代码时不需要它。然而,我在别处读到,使用limit函数得到的数据帧只有一个分区 我想测量我的工作的处理时间,这不应该受到限制。实际上,我尝试过重新分区,但性能改进很小(如果有的话)。我通过打印出df.rdd.getNumPartitions()来检查分区,它仍然是1。有没有办法强制重新划分 编辑:注意getNumPartitions()是在count操作之后运行的 EDIT2:示例代码 df
limit
函数从数据帧中获取n个条目/行。我知道这是不可取的,但这是一个预处理步骤,在实际实现代码时不需要它。然而,我在别处读到,使用limit函数得到的数据帧只有一个分区
我想测量我的工作的处理时间,这不应该受到限制。实际上,我尝试过重新分区,但性能改进很小(如果有的话)。我通过打印出df.rdd.getNumPartitions()
来检查分区,它仍然是1
。有没有办法强制重新划分
编辑:注意getNumPartitions()
是在count
操作之后运行的
EDIT2:示例代码
df = random_data.groupBy("col").count().sort(F.desc("count")).limit(100).repartition(10)
df.count()
print("No. of partitions: {0}".format(df.rdd.getNumPartitions())) # Prints 1
调用cache()
然后调用count()
成功
我认为Spark的延迟计算出于某种原因没有执行重新分区,但我不确定为什么,因为
count
应该是一个动作。我使用Spark 2.2,并且我能够在限制后重新分区数据。你能分享一下示例代码吗?@AyushVatsyayan:嗨,我已经用示例代码更新了我的问题。秒的df.count()
的输出是什么line@AyushVatsyayan:我没有打印出count()
的输出。