2016-09-30 10 views
1

私は、Spark 2.0.0のDataset[Row]DataFrame)で単純なマップを実行しようとしています。 Scalaの[行] Spark

val df: DataSet[Row] = ... 
df.map { r: Row => r } 

このような単純なものしかし、コンパイラは、私はマップ機能に暗黙の Encoder[Row]引数を提供していないよという不平を言っている:

メソッドマップのための十分な引数:(暗黙の証拠$ 7: エンコーダ[行])。私が最初にRDDに変換する場合

すべてが正常に動作しますds.rdd.map { r: Row => r }が、タプルタイプEncoders.product[(Int, Double)]のためにそこにあるようEncoder[Row]を取得する簡単な方法は存在しないはず?

は、[私のが動的にそれが簡単に強く型付けされた Datasetに変換することができないようにサイズ設定されていることに注意してください。]

答えて

1

Encoderニーズを内の要素をパックする方法を知っています。したがって、実行時にの要素を決定し、対応するデコーダを使用するrow.structTypeを使用して独自のEncoder[Row]を書くことができます。

のデータについて詳しく知りたい場合はhttps://github.com/adelbertc/frameless/

関連する問題