我試圖從排序的RDD [字符串]中提取一些元素。我嘗試使用「zipWithIndex」並將剩餘的RDD過濾爲零。如何將已排序的RDD拆分爲n個部分並從每個部分獲取第一個元素?
val expectedSize = 165
val n = rddOfStrings.count/expectedSize
val resultArray = rddOfStrings.sortBy(x => x).zipWithIndex.filter(x => x._2 % n == 0).map(_._1).collect
這裏的問題是「n」不總是整數。如果它是double,則resultArray的大小不會等於expectedSize(生成+1或-1)。如何使它返回相同大小的集合?
P.S.我通過向所有執行者傳遞集合對象來嘗試spark累加器。由於非常大的數據集失敗。
是什麼你的目標在這裏?這只是爲了從你的數據集中得到一個樣本,spark實際上有一個你可以使用的樣本方法。 – puhlen
我想將rdd(排序)分成165個相等部分,並從每個部分取第一個(頭部)元素。 – sen