spark解决No implicits found for parameter evidence$6: Encoder

spark | 2020-07-27 10:38:58

dataset、dataframe调用map会生成新的rdd,此时就需要指定rdd各个字段的类型,如果不指定就会报异常:No implicits found for parameter evidence$6: Encoder

解决方法1:指定Encoder

var newDf = df.mapPartitions(row => {
	row.map(r => {
		("name", "value", "rank")
	})
})(Encoders.tuple(Encoders.STRING, Encoders.STRING, Encoders.STRING))
.toDF("name", "value", "rank")

 

解决方法二:隐式转换

import spark.implicits._
var newDf = df.mapPartitions(row => {
	row.map(r => {
		("name", "value", "rank")
	})
})
.toDF("name", "value", "rank")

 

解决方法三:使用rdd来遍历

var newDf = df.rdd.mapPartitions(row => {
    row.map(r => {
        ("name", "value", "rank")
    })
})

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号