Spark数据类型不同时flatMap()匹配的问题
当我们makeRDD的时候可能会创造不同的数据类型。比如说
val rdd: RDD[Any] = sc.makeRDD(List(List(1, 2), 3, List(4, 5)))
这里就包含了List类型,和整数的类型,
如果这个时候单纯的就按照列表的形式对于整个的List进行flatMap操作的话(形如下面这个代码块)
rdd.flatMap(
list => {
list
}
)
就不行了 直接运行甚至程序还没开始运行IDE就给你报错了
报错的原因就是类型不匹配,那么怎么办呢 我们就可以自己写一个类型匹配(形如下面的这个代码块)
val listRDD: RDD[Any] = rdd.flatMap(
data => {
// TODO 这里就是匹配的功能的写法
data match {
//如果是list类型,那么就flatmap出list类型
case list: List[_] => list
//如果是数据的类型,那么救把数据类型包装成list类型
case dat => List(dat)
}
}
)
大致就是这个样子,仅供菜鸟参考,我其实就是个菜鸟,大神不要喷我 谢谢!