52

Spark で Dataframe または Catalyst の Row クラスを取得したら、それをコード内のケース クラスに変換したいと考えています。これはマッチングでできる

someRow match {case Row(a:Long,b:String,c:Double) => myCaseClass(a,b,c)}

しかし、行に膨大な数の列がある場合、たとえば数十個の Double、いくつかの Boolean、さらには null が含まれていると、見苦しくなります。

申し訳ありませんが、Row を myCaseClass にキャストできるようにしたいと思います。それは可能ですか、それとも私はすでに最も経済的な構文を手に入れましたか?

4

4 に答える 4

26

私の知る限り、Row をケース クラスにキャストすることはできませんが、次のように、Row フィールドに直接アクセスすることを選択することもありました。

map(row => myCaseClass(row.getLong(0), row.getString(1), row.getDouble(2))

特に、ケース クラス コンストラクターが行の一部のフィールドのみを必要とする場合は、これがより簡単であることがわかります。

于 2015-09-02T08:02:27.210 に答える