首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RDD collect()失败

RDD collect()失败
EN

Stack Overflow用户
提问于 2017-08-09 23:15:40
回答 1查看 1K关注 0票数 0

一个我觉得可能会让别人受益的问题。

如果我运行

代码语言:javascript
复制
val rdd1  = sc.parallelize( List( "a", "b", "c", "d", "e")) 
val rdd1a = rdd1.map(x => (x, 110, 110 - x.toByte ))

rdd1: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[55] at parallelize at <console>:44
rdd1a: org.apache.spark.rdd.RDD[(String, Int, Int)] = MapPartitionsRDD[56] at map at <console>:46

它起作用了。

一旦我添加了collect

代码语言:javascript
复制
val rdd1  = sc.parallelize( List( "a", "b", "c", "d", "e")) 
val rdd1a = rdd1.map(x => (x, 110, 110 - x.toByte )).collect()

它失败了。

我真的有点摸不着头脑。谁能澄清?这是一个RDD,所以呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-09 23:23:00

错误在这里

代码语言:javascript
复制
val rdd1a = rdd1.map(x => (x, 110, 110 - x.toByte ))

由于xstring,而您正在尝试将其更改为Byte

你应该做的是

代码语言:javascript
复制
val rdd1a = rdd1.map(x => (x, 110, 110 - x.toCharArray()(0).toByte ))

这在这里没有失败

代码语言:javascript
复制
val rdd1a = rdd1.map(x => (x, 110, 110 - x.toByte ))

因为这是一个惰性计算,所以它不会被执行,collect是一个动作。在执行操作之后,代码也会被执行。

希望这能有所帮助

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45594587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档