这是一个非常具体的问题
我有一个表,我选择了一个“字符串”列和两个“时间戳记”列,并将它们收集到具有List [(String,Timestamp,Timestamp)]格式的列表中,我想将其转换为具有Map [String]格式的Map ,ArrayList(Timestamp,Timestamp)],因为一个字符串可以具有多个对应的Timestamp值。但我不知道如何在Spark / Scala中进行传输,我尝试了以下代码,但无法正常工作:
def listToMap(input:List[(String,Timestamp,Timestamp)]) :util.HashMap[String,util.ArrayList[Timestamp,Timestamp]]= {
var out = new util.HashMap[String,util.ArrayList[Timestamp,Timestamp]]()
for (value<-input) {
val array=new util.ArrayList[Timestamp,Timestamp](value(1),value(2))
out.put(value(0),array)
}
}
有人知道这样做的最好方法是什么?谢谢!
答案 0 :(得分:0)
我认为您可以使用断点来查找代码在out.put(value(0), array).
处的工作方式
答案 1 :(得分:0)
您可以使用以下代码:ArrayBuffer与Scala中的ArrayList等效。
import scala.collection.mutable.ArrayBuffer
val lst = List(("Test1","Timestamp1","Timestamp2"),("Test2","Timestamp3","Timestamp4"))
println(lst.map(x=>x._1 ->ArrayBuffer(x._2,x._3)).toMap)
输出:
Map(Test1 -> ArrayBuffer(Timestamp1, Timestamp2), Test2 -> ArrayBuffer(Timestamp3, Timestamp4))