Spark遇到的两三事以及阿里云搭建spark集群的大坑

1)错误代码如下:

//distinctsubject是对应学科名的rdd数组。
 val distinctsubject: RDD[String] =allsubject.distinct()
//这个思路是将rdd中的字符串取出来,一个个用作筛选分组。
 distinctsubject.foreach(dsbj=>{
//逐个筛选出每个学科对应老师的数据(take是一个action,会触发任务提交)
 val filtered: RDD[((String, String), Int)] =reduced.filter(_._1._1==dsbj)
//可以调用rdd的sortBy方法,内存+磁盘进行排序
 val sorted: Array[((String, String), Int)] =filtered.sortBy(_._2).take(topN)
 println(dsbj+":"+sorted)
})

 

错误原因:

rdd并不真正存储数据,根据官方文档:transformation和action只能由driver调动,一个transformation和action不能写在另一个transformation和action里面。因此若要通过循环运行一系列rdd操作,条件栏中需要是集合,而不是rdd。

如果需要将rdd转换成集合数组,只需要通过collect手机结果赋值给数组变量即可。

实际上,rdd的一系列转换操作

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值