問題タブ [apache-spark-encoders]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-spark - エンコード後にカスタム タイプを操作することはできませんか? Spark データセット
あなたがこれを持っているとしましょう(カスタムタイプのエンコードの解決策はこのスレッドからもたらされます):
を実行するds.show
と、次のようになりました。
コンテンツが内部の Spark SQL バイナリ表現にエンコードされているためだと理解しています。しかし、このようにデコードされたコンテンツを表示するにはどうすればよいでしょうか?
更新1
コンテンツを表示することは最大の問題ではありません。さらに重要なことは、データセットを処理するときに問題が発生する可能性があることです。次の例を検討してください。
これは、kryo
-encoded 型では便利なような操作ができないということjoinWith
ですか?
Dataset
次に、カスタムタイプをどのように処理しますか?
エンコード後に処理できない場合、このkryo
カスタム型のエンコード ソリューションのポイントは何ですか?!
(以下の @jacek によって提供される解決策は、case class
型について知っておくとよいですが、それでもカスタム型をデコードできません)
apache-spark - DataType (UDT) と Spark SQL のエンコーダー
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 つの概念をさらに探求し、オープン ディスカッションを引き付けることです。そのため、質問があまり具体的でない場合は、少しご容赦ください..そして、理解の共有を歓迎します. ありがとう。
scala - kryo 期待値を使用した Scala Spark での Guava Cache のエンコード
私は GuavaCache (とscalacache wrapper ) を使用しており、いくつかのスパーク パイプラインでキャッシュ オブジェクト全体を保存して使用したいと考えています。
kryo Encoder を使用しSomeService
て、キャッシュを含むケース クラスである をエンコードします。コードを実行すると、次の例外がスローされます。
Guava キャッシュはシリアライズ可能であるため、Kryo エンコーダーでエンコードできるはずだと考えました。LocalManualCacheクラスは Serializable も定義されています
- グアバキャッシュを直接使用したときの同じエラー
asMap
各レコードの TTL が失われるため、使用したくありません。
gauvaキャッシュオブジェクトを手動でエンコードおよびデコードできますか? それとも、カスタム キャッシュを使用できなくなるのでしょうか?