dataset的foreachPartition方法有多个重载函数,引起编译错误
来源:9-13 -需求一统计结果写入到MySQL
qq_浴火重生_sFJLSU
2019-10-01
/**
* 将统计结果写入到MySQL中
*/
try {
videoAccessTopNDF.foreachPartition(partitionOfRecords => {
// val list = new ListBuffer[DayVideoAccessStat]
// partitionOfRecords.foreach(info => {
// val day = info.getAs[String]("day")
// val cmsId = info.getAs[Long]("cmsId")
// val times = info.getAs[Long]("times")
//
// /**
// * 不建议大家在此处进行数据库的数据插入
// */
//
// list.append(DayVideoAccessStat(day, cmsId, times))
// })
//
// StatDAO.insertDayVideoAccessTopN(list)
})
} catch {
case e:Exception => e.printStackTrace()
}
这段代码的这一行: videoAccessTopNDF.foreachPartition(partitionOfRecords => {
在idea中不报错,但编译的时候报下面的错,查了一个晚上,不知道什么问题,请老师指点
Error:(153, 25) ambiguous reference to overloaded definition,
both method foreachPartition in class Dataset of type (func: org.apache.spark.api.java.function.ForeachPartitionFunction[org.apache.spark.sql.Row])Unit
and method foreachPartition in class Dataset of type (f: Iterator[org.apache.spark.sql.Row] => Unit)Unit
match argument types (Object => Unit)
videoAccessTopNDF.foreachPartition(partitionOfRecords => {
3回答
-
qq_浴火重生_sFJLSU
提问者
2019-10-02
问题已经解决了,是foreachPartition有多个重载方法的问题,编译器不知道用哪一个所以报上面的错,显式指定方法就可以了,我看之前有人提出类似的问题,说找不到foreach的问题,也是这个原因。用的spark版本比较新,应该是新版本才有的问题。
112019-10-02 -
qq_浴火重生_sFJLSU
提问者
2019-10-01
之前一边看视频一边手敲的代码,没有问题,为了方便后续学习,全部用了GIT上的代码替换后就出现这个问题了
012019-10-01 -
Michael_PK
2019-10-01
你到git上把那代码拷贝下来,使用对比工具,beyond compare对比下哪里差别
00
相似问题