RDD を使用する場合、RDD 内の項目をキーでグループ化しました。
val pairRDD = oldRDD.map(x => (x.user, x.product)).groupByKey
pairRDD
タイプは次のとおりです。RDD(Int, Iterable[Int]))
私が問題を抱えているのは、単に特定の要素にアクセスすることです。キーで RDD のアイテムにアクセスできないように見える場合、キーを持っていることのポイントは何ですか?
現時点ではfilter
、RDD を 1 つの項目にまとめましたが、まだ RDD があるためforeach
、RDD を印刷する必要があります。
val userNumber10 = pairRDD.filter(_._1 == 10)
userNumber10.foreach(x => println("user number = " + x._1))
または、filter
RDD を実行してtake(1)
、サイズ 1 の配列を返すこともできます。
val userNumber10Array = pairRDD.filter(_._1 == 10).take(1)
その代わりに、返された配列の最初の要素を選択できます。
val userNumber10Array = pairRDD.filter(_._1 == 10).take(1)(0)
必要に応じてペアを返します。しかし...明らかに、これは不便であり、これはRDDの使用方法ではないと言うことで推測する危険があります!
なぜ私はこれをしているのですか?まあ、それが起こった理由は、自分のテスト目的でRDDに何があったかを単に「見たい」からです。それで、RDD(より厳密にはpairRDD)の個々のアイテムにアクセスする方法はありますか?もしそうなら、どのように? そうでない場合、pairRDD の目的は何ですか?