我正在尝试加入两个配对的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是我的键,我想在其上执行连接。
答案 0 :(得分:0)
联接是为RDD
Tuple2
个Tuple4[_, _, _, _]
个对象定义的。但是,在你的情况下,有任意元组(Tuple8[_, _, _, _, _, _, _, _]
和... =>
((field1, field2),
(field3, field4, field5, field6, field7, udfChar1, udfChar2, udfChar3)
) - 这只是无法工作。
你应该
... =>
((field1, field2), (field8, field9, field10))
和
{{1}}
分别。