如何处理RDD对象到集合对象

时间:2017-06-11 16:01:25

标签: apache-spark

我在将RDD个对象转换为collection个对象时遇到问题,有什么逻辑可以做到吗?

行示例:11-06-05-2016,Euro,EUR,0.803

代码:

val exRDD = sc.textFile(exchangeRatesPath).cache()

exRDD.map(l => l).map(rec => ( rec.split(",")(0) -> rec.split(",")(3).toDouble ) ) 

我的错误是什么?

2 个答案:

答案 0 :(得分:0)

根据我对您的问题的理解,您希望创建collections Map(date -> amount)。但你对获得Tuple2(String, Double)收集感到惊讶。

如果我理解你是正确的,那么你可以通过

达到你所需要的
val exRDD = sc.textFile("exchangeRatesPath").cache()

exRDD.map(line => line.split(",")).map(rec => scala.collection.mutable.HashMap(rec(0) -> rec(3).toDouble))

答案 1 :(得分:0)

您的代码只返回Tuple2[String, Double]如果您愿意获得Map[String, Double]。你需要做什么

exRDD.map(
    rec =>
      Map(rec.split(",")(0) -> rec.split(",")(3).toDouble))

注意:我认为exRDD.map(l => l)这不是必需的,因为除了通过迭代返回一行之外它没有做任何事情

希望这有帮助!