Spark Scala中的Array [RDD [(String,Set [String])]]转换

nilesh1212

我有一个类型为Array [RDD [(String,Set [String])]]的RDD数组,其中每个RDD是键和值的元组。键是字符串,值是Set [String],我想合并/合并具有相同键的Set。我试图在斯卡拉这样做,但没有喜悦。你能帮我一下吗。

e.g.
RDD["A",Set("1","2")]
RDD["A",Set("3","4")]
RDD["B",Set("1","2")]
RDD["B",Set("3","4")]
RDD["C",Set("1","2")]
RDD["C",Set("3","4")]

After transformation:
RDD["A",Set("1","2","3","4")]
RDD["B",Set("1","2","3","4")]
RDD["C",Set("1","2","3","4")]
马特乌斯·戴姆奇克(Mateusz Dymczyk)

如果单个RDDas输出是可以的(真的看不出有任何理由要制作许多只包含1条记录的RDD),则可以将您的Arrayof简化RDD为单个RDD,然后执行以下操作groupByKey

arr.reduce( _ ++ _ )
   .groupByKey
   .mapValues(_.flatMap(identity))

实例:

scala> val x = sc.parallelize( List( ("A", Set(1,2)) ) )
scala> val x2 = sc.parallelize( List( ("A", Set(3,4)) ) )
scala> val arr = Array(x,x2)
arr: Array[org.apache.spark.rdd.RDD[(String, scala.collection.immutable.Set[Int])]] = Array(ParallelCollectionRDD[0] at parallelize at <console>:27, ParallelCollectionRDD[1] at parallelize at <console>:27)
scala> arr.reduce( _ ++ _ ).groupByKey.mapValues(_.flatMap(identity)).foreach(println)
(A,List(1, 2, 3, 4))

@Edit:我发现这不是一个好主意,建议您重新考虑一下,但是您可以通过从上方获取所有键并多次过滤RDD来获得所需的结果:

val sub = arr.reduce( _ ++ _ ).groupByKey.mapValues(_.flatMap(identity))
val keys = sub.map(_._1).collect()
val result = for(k <- keys) yield sub.filter(_._1 == k)
result: Array[org.apache.spark.rdd.RDD[(String, Iterable[Int])]]

每个RDD都有一个元组,真的不认为它非常有用,性能很好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数组[Byte] Spark RDD转换为String Spark RDD

来自分类Dev

在Spark-Scala中将Dataset [Row]转换为RDD [Array [String]]的最佳方法?

来自分类Dev

Spark 1.5.1,Scala 2.10.5:如何扩展RDD [Array [String],Vector]

来自分类Dev

saveAsTextFile不是Array [String] spark RDD的成员

来自分类Dev

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

来自分类Dev

将标头添加到 RDD[string] spark scala

来自分类Dev

将 RDD Array[Any] = Array(List([String], ListBuffer([string])) 转换为 RDD(String, Seq[String])

来自分类Dev

在Spark / Scala中将RDD转换为Dataframe

来自分类Dev

在scala中将Spark Dataframe转换为RDD

来自分类Dev

使用scala和Spark将RDD中的每个记录转换为Array [Map]

来自分类Dev

无法将数组RDD转换为Spark中的列表RDD

来自分类Dev

如何在 Scala(spark) 中打印 String 或 String[Array]?

来自分类Dev

在Scala Spark中嵌套RDD

来自分类Dev

DataFrame:将列内的数组转换为RDD [Array [String]]

来自分类Dev

在火花中将Array [(String,String)]类型转换为RDD [(String,String)]类型

来自分类Dev

如何将RDD [String]转换为RDD [(String,String)]?

来自分类Dev

Spark-Scala RDD

来自分类Dev

使用Scala将org.apache.spark.mllib.linalg.Vector RDD转换为Spark中的DataFrame

来自分类Dev

如何在Spark Scala中遍历array [string]?

来自分类Dev

Scala Spark-将RDD [List [scala.Double]]转换为RDD [scala.Double]

来自分类Dev

我想在 Scala 中将 org.apache.spark.rdd.RDD[(Any, scala.collection.immutable.Iterable[String])] 扁平化为 String

来自分类Dev

在Spark和Scala中将RDD转换为JSON

来自分类Dev

将 CSV 转换为 RDD 并使用 Spark/Scala 读取

来自分类Dev

如何使用 Scala 语言将 Spark RDD 转换为 JSON

来自分类Dev

在apache-spark scala中访问Array RDD的特定元素

来自分类Dev

spark rdd时间戳转换

来自分类Dev

Spark中RDD转换的结果是什么?

来自分类Dev

将Dataframe转换回Spark中案例类的RDD

来自分类Dev

将 spark Rdd 列转换为 Pyspark 中的行

Related 相关文章

  1. 1

    数组[Byte] Spark RDD转换为String Spark RDD

  2. 2

    在Spark-Scala中将Dataset [Row]转换为RDD [Array [String]]的最佳方法?

  3. 3

    Spark 1.5.1,Scala 2.10.5:如何扩展RDD [Array [String],Vector]

  4. 4

    saveAsTextFile不是Array [String] spark RDD的成员

  5. 5

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

  6. 6

    将标头添加到 RDD[string] spark scala

  7. 7

    将 RDD Array[Any] = Array(List([String], ListBuffer([string])) 转换为 RDD(String, Seq[String])

  8. 8

    在Spark / Scala中将RDD转换为Dataframe

  9. 9

    在scala中将Spark Dataframe转换为RDD

  10. 10

    使用scala和Spark将RDD中的每个记录转换为Array [Map]

  11. 11

    无法将数组RDD转换为Spark中的列表RDD

  12. 12

    如何在 Scala(spark) 中打印 String 或 String[Array]?

  13. 13

    在Scala Spark中嵌套RDD

  14. 14

    DataFrame:将列内的数组转换为RDD [Array [String]]

  15. 15

    在火花中将Array [(String,String)]类型转换为RDD [(String,String)]类型

  16. 16

    如何将RDD [String]转换为RDD [(String,String)]?

  17. 17

    Spark-Scala RDD

  18. 18

    使用Scala将org.apache.spark.mllib.linalg.Vector RDD转换为Spark中的DataFrame

  19. 19

    如何在Spark Scala中遍历array [string]?

  20. 20

    Scala Spark-将RDD [List [scala.Double]]转换为RDD [scala.Double]

  21. 21

    我想在 Scala 中将 org.apache.spark.rdd.RDD[(Any, scala.collection.immutable.Iterable[String])] 扁平化为 String

  22. 22

    在Spark和Scala中将RDD转换为JSON

  23. 23

    将 CSV 转换为 RDD 并使用 Spark/Scala 读取

  24. 24

    如何使用 Scala 语言将 Spark RDD 转换为 JSON

  25. 25

    在apache-spark scala中访问Array RDD的特定元素

  26. 26

    spark rdd时间戳转换

  27. 27

    Spark中RDD转换的结果是什么?

  28. 28

    将Dataframe转换回Spark中案例类的RDD

  29. 29

    将 spark Rdd 列转换为 Pyspark 中的行

热门标签

归档