2016-11-29 12 views
1

私はスパークするのが新しいです、私は頻繁に(r._1 - >(r._2._1、r._2._2)のように、非常に複雑かもしれない別のタプルにタプルを変換することに絡み合っていることがわかりました。 r._3)、それと混同しました。これを改善する方法はありますか?spark rddの読みやすさを改善するには?

答えて

1

名前で列にアクセスできるDataFrameを使用することをお勧めします。これにより、はるかに優れた読み取り可能なコードを生成することができます。また、これらのフレームは、非常に効率的であるだけでなく、スキーマ情報も含むパーケットファイルとして格納できます。操作は非常に効率的に実装され、RDDに切り替えることはしばしば必要ではありません。

4
  • タプルを使用しないで、意味のあるケースクラスを定義します。代わりに

    val rdd = sc.parallelize(Seq((1, "foo", (2, 2.0)), (2, "bar", (-1, 1.0)))) 
    

    使用の

    case class Meta(someValue: Int, anotherValue: Double) 
    case class Record(x: Int, y: String, meta: Meta) 
    
    val records = sc.parallelize(Seq(
        Record(1, "foo", Meta(2, 2.0)), 
        Record(2, "bar", Meta(-1, 1.0)))) 
    
    records.map(record => (record.meta.anotherValue, record.x)) 
    
  • あなたはタプルを使用している場合は、インデックス上で便利なバインディングとのパターンマッチングを好みます。

    rdd.map { 
        case (x, _, (_, anotherValue)) => (anotherValue, x) 
    } 
    
関連する問題