【问题标题】:Transform an RDD of n elements into an RDD of single element将 n 个元素的 RDD 转换为单个元素的 RDD
【发布时间】:2016-06-29 14:50:33
【问题描述】:

我有如下字符串的 RDD

val rdd1: RDD[String] = RDD("a","b","c","d")

我想将上述 RDD 的元素连接起来,并将其转换为如下所示的单个元素的 RDD

RDD("a,b,c,d")

最好的方法是什么?

【问题讨论】:

  • 你真的想要一个单一元素的RDD 吗?如果 distributed 集合只有一项,那么它的价值是什么?如果没有,而您只是对该单条记录感兴趣,可以致电rdd1.collect().mkString(",")
  • 我想使用 rdd saveAsTextFile 方法将结果存储在 HDFS 中。这就是为什么我想把它转换成另一个 RDD。
  • @raHul 那么就没有必要这样做了。如前所述,如果您只是将所有数据压缩到一个单值 RDD 中,那么使用分布式处理框架是没有意义的。 saveAsTextFile 会为您处理好,并将您的结果分发到 HDFS。
  • 在我的用例中,我想将结果作为单个记录存储在配置单元表中。

标签: scala hadoop apache-spark rdd


【解决方案1】:

使用glom函数:

val res: RDD[Array[String]] = RDD("a","b","c","d").glom
// > res = RDD(Array("a", "b", "c", "d"))

然后您可以使用mkString 函数将数组转换为字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2015-09-09
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多