【发布时间】:2016-04-14 16:23:45
【问题描述】:
对于最初问题中的混淆,我们深表歉意。这是可重现示例的问题:
我的 rdd 是 [String],我的 rdd 是 [String, Long]。我想根据第二个String 与第一个String 的匹配得到[Long] 的rdd。示例:
//Create RDD
val textFile = sc.parallelize(Array("Spark can also be used for compute intensive tasks",
"This code estimates pi by throwing darts at a circle"))
// tokenize, result: RDD[(String)]
val words = textFile.flatMap(line => line.split(" "))
// create index of distinct words, result: RDD[(String,Long)]
val indexWords = words.distinct().zipWithIndex()
因此,我想要一个带有单词索引的 RDD,而不是 "Spark can also be used for compute intensive tasks" 中的单词。
再次抱歉,谢谢
【问题讨论】:
-
我建议你看看map-function。
-
由于每个 RDD 中可以有很多数组,那么您将使用哪对数组来获得结果?还是基于索引?
-
@iboss 根据
keys与x的匹配,结果rdd 将是y的values。 -
我想你把我们都弄糊涂了——示例代码中的数组实际上应该是 RDD 吗?换句话说,第一个 RDD 类型是
RDD[Array[String]]还是RDD[String]?如果是后者,并且您只是在示例中用数组“替换”RDD - 请不要。如果是前者 - 请使用 RDD 创建一个具有预期结果的完整示例。 -
"paired rdd of
Array[String, Long]" - 仍然没有意义。是RDD[(String, Long)](确实可以用作PairRDD)还是RDD[Array[(String, Long)]]?如果是后者,请举一个完整的例子。如果是前者 - 为什么在示例中将 RDD 替换为 Arrays?
标签: scala apache-spark rdd