2017-10-25 12 views
2

Spark Dataframeを書き込むときにランタイムタイプのチェックを追加しようとしていますが、基本的にDataFrameスキーマがタイプTと互換性があることを確認したい正確に同じでなければならない。ここに私のコードはDataframeのsparkスキーマとTタイプを比較する

def save[T: Encoder](dataframe: DataFrame, url: String): Unit = { 
     val encoder = implicitly[Encoder[T]] 
     assert(dataframe.schema == encoder.schema, s"Unable to save schemas don't match") 

     dataframe.write.parquet(url) 
     } 

ある現在、私は、私は彼らがタイプTと互換性があることを確認することができるか、スキーマが対等であることを確認するのですか?互換性と

は私がdataframe.as[T]を実行する場合、それが動作することを意味する(ただし、それは非常に高価であるので、私はそれを実行する必要はありません)

答えて

1

は、同じスキーマに空のデータフレームを作成し、それに.as[T]を呼び出します。それが動作する場合、スキーマは互換性があります!

関連する問題