关于foreachPartition

来源:9-13 -需求一统计结果写入到MySQL

weixin_慕田峪8372375

2019-07-26

这是我的代码
try{

	       sparkTopN.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))//创建一个List内部含有统计完成的数据
	         })
	         StatDAO.insertDayVideoAccessTopN(list)//这里正式插入操作
   })

代码写完后没有报错,但是当开始跑的时候报了一个error

Error:(50, 29) value foreach is not a member of Object
partitionOfRecords.foreach(info =>{
看着意思说不是Object的成员,partitionOfRecords里面没有foreach这个方法,但是我看了一下源码,这是Iterator[ROW]类型的,foreach方法好像是继承自TraversbleOnce,里面定义了foreach方法。。。。

写回答

1回答

Michael_PK

2019-07-26

直接找个对比工具compare ,把你写的和git上对比下,应该是哪个环节数据类型有问题

0
3
weixin_慕田峪8372375
回复
Michael_PK
我检查了一遍没检查出错误,然后我把Scala的依赖版本都换成了2.11就解决了,之前一直用的是2.12版本,我看了一下源码,这个地方有改动 : //TODO 2.12: Remove these methods. They are already defined in GenTraversableOnce,不知道是不是这个,具体原因还没弄明白。先马克一下。。。
2019-07-27
共3条回复

以慕课网日志分析为例 进入大数据Spark SQL的世界

快速转型大数据:Hadoop,Hive,SparkSQL步步为赢

1644 学习 · 1129 问题

查看课程