Spark SQL では、 には制限があり、JVM オブジェクトと内部 Spark SQL 表現との間の変換には制限DataType
がSchema
あります。Encoder
- 実際には、 に関してこのようなエラーが発生する場合があります。
DataType
これは通常、カスタム タイプを使用する場合に発生しますがDataFrame
、カスタム タイプを使用する場合は発生しませんDataset[T]
。DataType
(またはUDT
)の議論は、Spark SQL でカスタム型のスキーマを定義する方法?
java.lang.UnsupportedOperationException: タイプ xxx のスキーマはサポートされていません
- 実際には、 に関してこのようなエラーが発生する場合があります。
Encoder
これは通常、カスタム タイプを使用する場合に発生しますがDataset[T]
、カスタム タイプを使用する場合は発生しませんDataFrame
。Encoder
カスタムオブジェクトをデータセットに保存する方法のポイントの議論?
データセットに格納されているタイプのエンコーダが見つかりません。プリミティブ型 (Int、String など) と製品型 (ケース クラス) は、sqlContext.implicits._ をインポートすることでサポートされます。他の型のシリアル化のサポートは、将来のリリースで追加される予定です。
私の理解では、どちらも内部の Spark SQL オプティマイザーに影響します (そのため、限られた数DataType
の としかEncoder
提供されていません)。DataFrame
そしてとの両方Dataset
がちょうどDataset[A]
、それから..
質問(またはそれ以上..混乱)
なぜ最初のエラーは にのみ表示され、 に表示され
DataFrame
ないのDataset[T]
ですか? 2番目のエラーについて同じ質問...作成
UDT
することで 2 番目のエラーを解決できますか? エンコーダーを作成すると、最初のエラーを解決できますか?それぞれの関係をどのように理解し、
Dataset
Spark SQL エンジンとどのように相互作用するのでしょうか?
この投稿のイニシアチブは、2 つの概念をさらに探求し、オープン ディスカッションを引き付けることです。そのため、質問があまり具体的でない場合は、少しご容赦ください..そして、理解の共有を歓迎します. ありがとう。