gpt4 book ai didi

scala - 如何拆分 Spark rdd Array[(String, Array[String])]?

转载 作者:行者123 更新时间:2023-12-02 17:41:38 24 4
gpt4 key购买 nike

我正在练习在 Spark shell 中进行排序。我有一个包含大约 10 列/变量的 rdd。我想根据第 7 列的值对整个 rdd 进行排序。

rdd
org.apache.spark.rdd.RDD[Array[String]] = ...

据我所知,做到这一点的方法是使用 sortByKey,而它又只适用于对。所以我映射了它,这样我就有了一对由column7(字符串值)和完整的原始rdd(字符串数组)组成的

rdd2 = rdd.map(c => (c(7),c))
rdd2: org.apache.spark.rdd.RDD[(String, Array[String])] = ...

然后我应用sortByKey,仍然没有问题......

rdd3 = rdd2.sortByKey()
rdd3: org.apache.spark.rdd.RDD[(String, Array[String])] = ...

但是现在如何从 rdd3 (Array[String]) 中分离、收集和保存已排序的原始 rdd ?每当我尝试对 rdd3 进行拆分时,都会出现错误:

val rdd4 = rdd3.map(_.split(',')(2))
<console>:33: error: value split is not a member of (String, Array[String])

我在这里做错了什么?还有其他更好的方法来对 rdd 的某一列进行排序吗?

最佳答案

你用 rdd2 = rdd.map(c => (c(7),c)) 做了什么是将其映射到一个元组。 rdd2: org.apache.spark.rdd.RDD[(String, Array[String])]正如它所说:)。现在,如果你想分割记录,你需要从这个元组中获取它。您可以再次映射,只取元组的第二部分(即 Array[String]... 的数组),如下所示: rdd3.map(_._2)

但我强烈建议使用 try rdd.sortBy(_(7))或类似的东西。这样你就不需要为元组之类的事情烦恼。

关于scala - 如何拆分 Spark rdd Array[(String, Array[String])]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36859789/

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