返回信息流之前一直在用spark的foreachpartition函数,由于最近有hive的操作,所有改成mappartition,但是有些疑问如下:
val dealData = sql("select * from flow.treated_log ").mapPartitions{ partition =>
val writeHive = new ListBuffer[Array[Byte]]()
val newIterator = partition.map { rowRecord =>
var newRowcord = new String()
/*一些操作这里就不列出*/
writeHive.append(newRowcord.getBytes)
newRowcord
}
val newFileName = new java.util.Date().getTime.toString()
createFile("/hive/"+newFileName+".txt",writeHive.toList)//写文件到hdfs操作
newIterator
}.filter(findNoDirection(_)).rdd
问题:代码执行没有出错,但writeHive这个变量是空的,写入的文件为空,不知partition.map中为何没有更新writeHive这个值,但是之前用foreachPartition与foreach 没有什么问题
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #24922同步于 2017/7/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
【问题】spark 中mappartition 定义变量没有更新
Through
2017/7/21镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。