在Scala,Spark中加入两个(配对的)RDD

时间:2018-06-14 12:56:30

标签: scala apache-spark

我正在尝试加入两个配对的RDD,根据此处提供的答案

Joining two RDD[String] -Spark Scala

我收到错误

错误:值leftOuterJoin不是org.apache.spark.rdd.RDD的成员[

代码段如下。

val pairRDDTransactions = parsedTransaction.map 
     {
              case ( field3, field4, field5, field6, field7,
           field1, field2, udfChar1, udfChar2, udfChar3) => 
             ((field1, field2), field3, field4, field5, 
                 field6, field7, udfChar1, udfChar2, udfChar3)   
     }      



val pairRDDAccounts  = parsedAccounts.map
     {
       case (field8, field1, field2, field9, field10 ) =>
         ((field1, field2), field8, field9, field10)

     }  



val transactionAddrJoin = pairRDDTransactions.leftOuterJoin(pairRDDAccounts).map {       
       case ((field1, field2), (field3, field4, field5, field6,
           field7, udfChar1, udfChar2, udfChar3, field8, field9, field10)) =>
             (field1, field2, field3, field4, field5, field6,
           field7, udfChar1, udfChar2, udfChar3, field8, field9, field10)           

 }

在这种情况下,field1和field 2是我的键,我想在其上执行连接。

1 个答案:

答案 0 :(得分:0)

联接是为RDD Tuple2Tuple4[_, _, _, _]个对象定义的。但是,在你的情况下,有任意元组(Tuple8[_, _, _, _, _, _, _, _]... => ((field1, field2), (field3, field4, field5, field6, field7, udfChar1, udfChar2, udfChar3) ) - 这只是无法工作。

你应该

... =>
  ((field1, field2), (field8, field9, field10))

{{1}}

分别。