gpt4 book ai didi

scala - 如何从 RDD 中创建 RDD 集合?

转载 作者:行者123 更新时间:2023-12-03 01:58:52 27 4
gpt4 key购买 nike

我有一个RDD[String]wordRDD。我还有一个从字符串/单词创建 RDD[String] 的函数。我想为 wordRDD 中的每个字符串创建一个新的 RDD。以下是我的尝试:

1) 失败,因为 Spark 不支持嵌套 RDD:

var newRDD = wordRDD.map( word => {
// execute myFunction()
(new MyClass(word)).myFunction()
})

2)失败(可能是由于范围问题?):

var newRDD = sc.parallelize(new Array[String](0))
val wordArray = wordRDD.collect
for (w <- wordArray){
newRDD = sc.union(newRDD,(new MyClass(w)).myFunction())
}

我的理想结果是这样的:

// input RDD (wordRDD)
wordRDD: org.apache.spark.rdd.RDD[String] = ('apple','banana','orange'...)

// myFunction behavior
new MyClass('apple').myFunction(): RDD[String] = ('pple','aple'...'appl')

// after executing myFunction() on each word in wordRDD:
newRDD: RDD[String] = ('pple','aple',...,'anana','bnana','baana',...)

我在这里找到了一个相关问题:Spark when union a lot of RDD throws stack overflow error ,但它没有解决我的问题。

最佳答案

使用flatMap获取您想要的RDD[String]

var allWords = wordRDD.flatMap { word => 
(new MyClass(word)).myFunction().collect()
}

关于scala - 如何从 RDD 中创建 RDD 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32512079/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com