我想给hdfs写一个数据文件。但是随机排序非常缓慢,尽管只有1700万个数据行。
df = df.withColumn('random_index',rand())
df = df.orderBy('random_index')
df.write.csv('hdfs:///user/yananc/yanan_gbdt_dnn', sep=',')有什么快速有效的方法来实现这一点吗?
发布于 2018-07-20 06:04:12
使用orderBy将对数据rows的所有分区进行行排序。由于您只对行进行洗牌感兴趣,所以可以转而使用sortWithinPartitions。这种方法不需要对数据进行洗牌,所以速度更快:
df.sortWithinPartitions(rand())当然,取决于数据,这不会给数据一个完全随机的顺序。这取决于如何跨分区分配行。
https://stackoverflow.com/questions/51435475
复制相似问题