【发布时间】:2017-11-24 19:55:13
【问题描述】:
我是 Spark 和转换的新手,所以需要一点帮助。我设法找到了相反的解决方案。当您将值放入列表而不是从中提取时。我想“扁平化”我猜密钥的值。我有一个类似 Map 的 RDD,其中键是 Int,值是字符串列表。我需要将列表中的 Key 和每个 Value 配对成一个 RDD。
【问题讨论】:
标签: scala apache-spark
我是 Spark 和转换的新手,所以需要一点帮助。我设法找到了相反的解决方案。当您将值放入列表而不是从中提取时。我想“扁平化”我猜密钥的值。我有一个类似 Map 的 RDD,其中键是 Int,值是字符串列表。我需要将列表中的 Key 和每个 Value 配对成一个 RDD。
【问题讨论】:
标签: scala apache-spark
你可以使用 flatMap,然后像这样将每个元素映射到一个元组
val flattenedRDD = pairRDD.flatMap { case (i,l) => l.map( l => (i,l)) }
【讨论】:
Caused by: java.lang.ClassCastException: org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema cannot be cast to java.lang.String 是否有可能在平面地图行中正确投射?
//loading into data frame val matchesRDD = MongoSpark.load[Match](spark, readConfig) //making DF [Boolean,Seq[Player]] val tuplesArrayIGuess = matchesRDD .rdd .map(elem => {(elem.getAs[Boolean]("radiantWin"), elem.getAs[Seq[PlayerMongo]]("players"))}) //and code you've suggested. it's failing on case line. tuplesArrayIGuess.flatMap({ case (i,l) => l.map( l => (i,l)) }) 希望这会有所帮助。抱歉编辑风格。无法在评论部分以任何其他方式进行