Spark RDDのjoin関数が見つからずエラーが発生する場合の対処方法について以下に記述します
現象
SparkにはRDD(K,V)とRDD(K,W)を結合してRDD(K, (V,W))を作成するjoinという関数があります
例えば以下のように使います
test.scala
case class tbla(key:String, val:Int)
case class tblb(key:String, val2:Int)
(中略)
val tblaWithKey = tbla.map(n => (tbla.key, n))
val tblbWithKey = tblb.map(n => (tblb.key, n))
tblaWithKey.join(tblbWithKey)
しかしこのソースをコンパイルすると
error: value join is not a member of org.apache.spark.rdd.RDD[(String, Int)]
というエラーが発生して止まることがあります
対応方法
以下のimport文を追加してください
test.scala
import org.apache.spark.SparkContext._
このjoin関数はRDDのメンバ関数ではなく、PairRDDFunctionsというクラスのメンバになります
Importしていない場合、このPairRDDFunctionsが見つからず結果joinも使えなくなってしまうというわけです