【问题标题】:How to print off the joined RDD's result如何打印加入的 RDD 的结果
【发布时间】:2018-08-06 14:06:02
【问题描述】:

我有两个 RDD:

scala> mgrMap.take(5).foreach(println)
(1,Cliff)
(2,Raj)
(3,Alim)
(4,Jose)
(5,Jeff)

和

salMap.take(5).foreach(println)
(1,100)
(2,200)
(3,300)
(4,400)
(5,500)

我加入了他们并拥有第三个 RDD:

scala> val joined = mgrMap.join(salMap)
scala> joined res14: org.apache.spark.rdd.RDD[(Int, (String, Int))] = MapPartitionsRDD[8] at join at <console>:35

我想要的只是打印出第三个“加入”的 RDD 的内容,格式如下:

(1, Cliff, 100)
....
(5, Jeff, 500) 

我试过了,还是不行:

scala> val joinedMap = joined.map(x=>(x._1, x._2._1, x._2._2))
joinedMap: org.apache.spark.rdd.RDD[(Int, String, Int)] = apPartitionsRDD[11] at map at <console>:37

当我加入Map.first 时,出现以下错误:

18/02/26 21:02:42 错误执行程序:阶段 19.0 中的任务 1.0 异常 (TID 19) java.lang.NumberFormatException:对于输入字符串:“”

如果我运行同样的错误

joined.collect

我的命令有什么问题?如何显示 RDD 的预期结果,如 RDD[(Int, String, Int)]?

非常感谢。

【问题讨论】:

  • 我猜你在其他一些代码行上遇到了错误。该代码对我来说工作正常。
  • 谢谢,但不,出于测试目的,我每个 RDD 只有 5 行数据
  • 您是从文件中读取数据吗?我猜的主要原因是 rdd tuple2 之一的第一个元素是字符串,另一个是 int。确认
  • 代码对我来说也很好。
  • 我终于确定了根本原因,就像 Ramesh 所说的那样。在第二个 RDD 中,原始文件中有一个额外的空白行,它引入了一个“”,并且连接结果失败。谢谢大家的回复。

标签: scala rdd


【解决方案1】:

我终于确定了拉梅什所说的根本原因。在第二个 RDD 中,原始文件中有一个额外的空白行,它引入了一个“”,并且连接结果失败。谢谢大家的回复。

【讨论】:

    猜你喜欢
    • 2018-08-12
    • 2014-06-04
    • 2018-09-26
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    相关资源
    最近更新 更多