加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 调用distinct和map一起抛出火花库中的NPE

发布时间:2020-12-16 18:42:41 所属栏目:安全 来源:网络整理
导读:我不确定这是否是一个错误,所以如果你做这样的事情 // d:spark.RDD[String]d.distinct().map(x = d.filter(_.equals(x))) 你会得到一个Java NPE.但是,如果你在分开后立即收集,一切都会好的. 我使用的是spark 0.6.1. 解决方法 Spark不支持嵌套RDD或引用其他RD
我不确定这是否是一个错误,所以如果你做这样的事情

// d:spark.RDD[String]
d.distinct().map(x => d.filter(_.equals(x)))

你会得到一个Java NPE.但是,如果你在分开后立即收集,一切都会好的.

我使用的是spark 0.6.1.

解决方法

Spark不支持嵌套RDD或引用其他RDD的用户定义函数,因此NullPointerException;见 this thread on the spark-users mailing list.

看起来你当前的代码试图按值对d的元素进行分组;你可以使用groupBy()RDD方法有效地做到这一点:

scala> val d = sc.parallelize(Seq("Hello","World","Hello"))
d: spark.RDD[java.lang.String] = spark.ParallelCollection@55c0c66a

scala> d.groupBy(x => x).collect()
res6: Array[(java.lang.String,Seq[java.lang.String])] = Array((World,ArrayBuffer(World)),(Hello,ArrayBuffer(Hello,Hello)))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读