【发布时间】:2020-05-24 06:34:46
【问题描述】:
我有一个这种格式的案例类的配对 RDD“A”
case class MyCaseClass(ID: String, date: Date, label: String)
像这样:
"ID1", ("ID1", 2006-06-28, "label1")
"ID2", ("ID2", 1996-05-13, "label2")
...
我正在尝试用这样的 ID 数组“B”来 leftOuterJoin 这个 RDD
[("ID1", "ID1") ("ID2", "ID2") ...]
原来如此
val C = B.leftOuterJoin(A)
然后我得到一些输出条目如下所示
("ID",("ID",Some(MyCaseClass("ID",2006-06-28,"label"))))
还有一些其他的输出条目看起来像这样
(ID,(ID,None))
我知道这是因为 B 中存在一些 ID,但 A 中不存在。然后我想通过这样做来填补那些缺失的值
val D = C.map(x => (x._1, x._2._2.getOrElse(MyCaseClass("xxx",9999-01-01,"-999"))))
但 scala 抱怨此错误消息:
<console>:1: error: Decimal integer literals may not have a leading zero. (Octal syntax is obsolete.)
val D = C.map(x => (x._1, x._2._2.getOrElse(MyCaseClass("xxx",9999-01-01,"-999"))))
^
我最初在这里 (scala: how to rectify "option" type after leftOuterJoin) 提出了同样问题的简单版本, 但它似乎比我想象的要复杂。 非常感谢您的帮助!
【问题讨论】: