我们在使用sparkSession算子的时候,经常会遇到这个问题,报这个错:(?: Encoder[Row] )
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0937828882c0e8f6111b57af1bc43db7.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fbcb596211bf7774c7e4e64da1b5f022.png)
事实上,我们的代码并没有问题,这个是因为一个序列化反序列化的事情
解决方法一:
可以在代码的上边加一个
val encode = RowEncoder(targetSchema)
// 其中,targetSchema为表的schema
然后将代码反序列化,也就是在代码的最后边加一个(encode) 就好啦
之后长这个样子:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/92df07e742c5e6fec2101106c06e5f57.png)
解决方法二:先转为rdd然后再进行一系列操作
如图:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/de8f85bb2e14c0c123342b32ce210e3d.png)
但要注意的是,方法一是使用的dataset算子,方法二是row的方式,方法不同,看你需要哪个啦