我正在練習Spark殼中的排序。我有一個約10列/變量的rdd。我想在第7欄如何拆分Spark rdd Array [(String,Array [String])]?
rdd
org.apache.spark.rdd.RDD[Array[String]] = ...
的值全RDD從我所收集做到這一點的方法是使用sortByKey,這反過來僅適用於對排序。所以我映射,所以我想有一雙由column7(字符串值)的和完整的原始RDD(字符串數組)
rdd2 = rdd.map(c => (c(7),c))
rdd2: org.apache.spark.rdd.RDD[(String, Array[String])] = ...
我再申請sortByKey,仍然沒有問題... ...
rdd3 = rdd2.sortByKey()
rdd3: org.apache.spark.rdd.RDD[(String, Array[String])] = ...
但是現在如何從rdd3(Array [String])拆分,收集並保存已排序的原始rdd?每當我嘗試拆分rdd3它給我一個錯誤:
val rdd4 = rdd3.map(_.split(',')(2))
<console>:33: error: value split is not a member of (String, Array[String])
我在做什麼錯在這裏?是否有其他更好的方法來對其某一列上的rdd進行排序?
正是你想要的我不明白。你的意思是你想分割Array [String]中的每個字符串? – jtitusj
你試圖拆分Tuple,這就是爲什麼它是錯誤的原因 –
@John不,我想拆分rdd3(一對已排序的第7列和原始rdd),所以我會將原始rdd返回,但仍然按第7列排序...而沒有真正將第7列作爲前綴(如rdd3中)。我稍微編輯了這個問題,現在更清楚了嗎? –