![](/img/trans.png)
[英]How to convert RDD[(String, Iterable[VertexId])] to DataFrame?
[英]Filter RDD[(VertexId,(VertexId, String, String))] in Scala
我有一个RDD来源:
var userNodesRdd = usersGraph.vertices.asInstanceOf[RDD[(VertexId,(VertexId, String, String))]]
userNodesRdd.foreach(println) // check
/* I see:
* (533,[533,fobi,m])
* (610,[610,pablo,m])
* (627,[627,marco,m])
* (571,[571,anna,f])
* (590,[590,luca,m])
*
我想从中获得一个仅包含可验证条件的元素的RDD(仅包含具有此方面的元素( _ , [ _ , _ , m]) )
。 为了这个目标,我正在使用:
var maleUserNodesRdd = userNodesRdd.filter{
case (_,(_,_,gender)) => gender == "m"
}
maleUserNodesRdd.foreach(println)
但我得到:
Caused by: java.lang.ClassCastException: org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema cannot be cast to scala.Tuple3
为什么?
代码中的值是Row
对象,而不是Tuple3
,因此您应该在模式中使用Row
:
import org.apache.spark.sql.Row
val maleUserNodesRdd = userNodesRdd.filter{
case (_, Row(_, _, gender)) => gender == "m"
}
与此同时:
asInstanceOf[RDD[(VertexId,(VertexId, String, String))]]
无效只是保持
var userNodesRdd = usersGraph.vertices
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.