Scala 从连接的RDD中删除层并为元素命名

Scala 从连接的RDD中删除层并为元素命名,scala,apache-spark,Scala,Apache Spark,我正在处理RDD之间的一系列连接,在进行了几次连接之后,从索引中访问每个元素会变得非常混乱。下面是我加入的RDD。这只是一个简单的例子。实际上它可能会变得更难看 res41: org.apache.spark.rdd.RDD[(String, ((String, Double), Double))] 我可以: 给RDD中的每个元素命名,然后访问它们 移除图层并将所有元素展平为逗号分隔的值?我知道flatMap可能会有帮助,但我不知道如何使用它 任何帮助都将不胜感激您没有提到您正在使用哪种编程语

我正在处理RDD之间的一系列连接,在进行了几次连接之后,从索引中访问每个元素会变得非常混乱。下面是我加入的RDD。这只是一个简单的例子。实际上它可能会变得更难看

res41: org.apache.spark.rdd.RDD[(String, ((String, Double), Double))]
我可以:

  • 给RDD中的每个元素命名,然后访问它们

  • 移除图层并将所有元素展平为逗号分隔的值?我知道flatMap可能会有帮助,但我不知道如何使用它


  • 任何帮助都将不胜感激

    您没有提到您正在使用哪种编程语言,但在Scala中,您可以通过声明一个案例类并将RDD映射到该类来展开并命名字段:

      val conf = new SparkConf().setMaster("local").setAppName("example")
      val sc = new SparkContext(conf)
    
      val data = List(
        ("abc", (("x", 12.3), 23.4)),
        ("def", (("y", 22.3), 24.4)),
        ("jkl", (("z", 32.3), 25.4))
      )
    
      val rdd = sc.parallelize(data)
    
      case class MyDataStructure(field1: String, field2: String, field3: Double, field4: Double)
    
      val caseRDD = data.map {
        case (f1, ((f2, f3), f4)) => MyDataStructure(f1, f2 , f3, f4)
      }
    
      caseRDD //has type RDD[MyDataStructure]
    

    谢谢你!!这正是我所需要的,我实际上在Scala工作。这让我快发疯了:(可能是