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
相似问题
