scala - 結合されたRDDフィールドに読みやすい方法でアクセスする

原文 scala join tuples alias rdd

2つのRDDに参加しましたが、新しいRDDフィールドにアクセスしようとすると、それらをタプルとして扱う必要があります。それはそれほど読みにくいコードにつながります。いくつかのエイリアスを作成するために 'type'を使用しようとしましたが、機能せず、タプルとしてフィールドにアクセスする必要があります。コードを読みやすくする方法はありますか?

たとえば、結合されたRDDの行をフィルターにかけようとすると、
valjoinedRDD = RDD1.join(RDD2).filter(x => x._2._2._5!= 'temp')

2,5などの代わりに名前を使用したいと思います。

ありがとう
答え
パターンマッチングは賢く使用してください。

val rdd1 = sc.parallelize(List(("John", (28, true)), ("Mary", (22, true)))
val rdd2 = sc.parallelize(List(("John", List(100, 200, -20))))
rdd1
  .join(rdd2)
  .map {  
    case (name, ((age, isProlonged), payments)) => (name, payments.sum)
  }
  .filter { 
    case (name, sum) => sum > 0
  }
  .collect()
res0: Array[(String, Int)] = Array((John,280))


別のオプションは、RDAでdataframes抽象化を使用し、SQLクエリを作成することです。
関連記事

scala - RDDの行を比較する

scala - scalaz.HeapのInt Int Order

scala - 高階の別の関数を呼び出すときのScala関数の強制[複製]

scala - Sparkコアの変更とビルド

java - Can In Gradleは.javaファイル、.clojureファイル、.scalaファイルを混在させることができます

mongodb - 任意のJSONブランチを備えたreactmongo BSONライター/リーダー(スプレーも使用)

java - Scalaで大きなログファイルを複数のファイルに分割する

scala - Spark MLLIBに関する質問

scala - Scalaで既存の型をバインドする

scala - マクロパラダイスを有効にしてマクロアノテーションを展開する