データフレームをhdfsに書き込みたい。ただし、データ行は1,700万行しかないにもかかわらず、ランダムな順序付けは非常に遅くなります。
df = df.withColumn('random_index',rand())
df = df.orderBy('random_index')
df.write.csv('hdfs:///user/yananc/yanan_gbdt_dnn', sep=',')
これを実現するための迅速で効率的な方法はありますか?
を使用orderBy
すると、データフレームのすべてのパーティションにわたって行が並べ替えられます。行をシャッフルすることだけに関心があるので、sortWithinPartitions
代わりに使用することを検討できます。この方法ではデータのシャッフルが必要ないため、より高速です。
df.sortWithinPartitions(rand())
もちろん、データフレームによっては、これによってデータが完全にランダムな順序になるわけではありません。これは、行がパーティション間でどのように分散されているかによって異なります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加