take(count)
は、最初のcount
という項目を持つ配列を返すRDDのアクションです。RDDを変換する 'take'
最初にcount
の項目を含むRDDを返す変換はありますか?私は、データがドライバに転送したくない :
(カウントは概算であればそれはOKです)、私は得ることができる最高は
val countPerPartition = count/rdd.getNumPartitions.toDouble
rdd.mapPartitions(_.take(countPerPartition))
更新です。私の場合、count
はかなり大きく、ドライバはそれを保持するのに十分なメモリがありません。さらなる変換のためにデータをパラレル化したままにしておきたい。
あなたは 'sample'を使うことができますが、それはrdd特定の数よりもむしろ。 – puhlen
'sample'はどれくらいの費用がかかりますか?それは1000番目のアイテムを取得するために高価な場合は、それはまた、高価でしょうか? – ov7a
私はそれを前に使っていませんが、それはかなり安いはずです。特に置換えなしでサンプルすると、それほど多くの作業はありません。 – puhlen