34

コンパイル時に分析エラーと構文エラーが発生し、ハードコーディングされた名前/番号の代わりにゲッターを使用できるため、Spark データセットが気に入っています。ほとんどの計算は、Dataset の高レベル API で実行できます。たとえば、RDD 行のデータ フィールドを使用するよりも、Dataset 型付きオブジェクトにアクセスすることで、agg、select、sum、avg、map、filter、または groupBy操作を実行する方がはるかに簡単です。

ただし、これには結合操作がありません。このような結合を行うことができると読みました

ds1.joinWith(ds2, ds1.toDF().col("key") === ds2.toDF().col("key"), "inner")

しかし、それは私が望むものではなく、ケース クラス インターフェイスを介して行うことを好むので、このようなものです。

ds1.joinWith(ds2, ds1.key === ds2.key, "inner")

今のところ最良の代替手段は、ケース クラスの横にオブジェクトを作成し、この関数を使用して正しい列名を文字列として提供することです。したがって、コードの最初の行を使用しますが、ハードコーディングされた列名の代わりに関数を配置します。しかし、それは十分にエレガントに感じません..

誰かがここで他のオプションについて私にアドバイスできますか? 目標は、実際の列名から抽象化し、できればケース クラスのゲッターを介して機能することです。

Spark 1.6.1 と Scala 2.10 を使用しています

4

2 に答える 2