問題タブ [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.

0 投票する
1 に答える
463 参照

apache-spark - エンコード後にカスタム タイプを操作することはできませんか? Spark データセット

あなたがこれを持っているとしましょう(カスタムタイプのエンコードの解決策はこのスレッドからもたらされます):

を実行するds.showと、次のようになりました。

コンテンツが内部の Spark SQL バイナリ表現にエンコードされているためだと理解しています。しかし、このようにデコードされたコンテンツを表示するにはどうすればよいでしょうか?


更新1

コンテンツを表示することは最大の問題ではありません。さらに重要なことは、データセットを処理するときに問題が発生する可能性があることです。次の例を検討してください。

これは、kryo-encoded 型では便利なような操作ができないということjoinWithですか?

Dataset次に、カスタムタイプをどのように処理しますか?
エンコード後に処理できない場合、このkryoカスタム型のエンコード ソリューションのポイントは何ですか?!

(以下の @jacek によって提供される解決策は、case class型について知っておくとよいですが、それでもカスタム型をデコードできません)

0 投票する
0 に答える
202 参照

apache-spark - DataType (UDT) と Spark SQL のエンコーダー

Spark SQL では、 には制限あり、JVM オブジェクトと内部 Spark SQL 表現との間の変換には制限DataTypeSchemaあります。Encoder

  • 実際には、 に関してこのようなエラーが発生する場合があります。DataTypeこれは通常、カスタム タイプを使用する場合に発生しますがDataFrame、カスタム タイプを使用する場合は発生しませんDataset[T]DataType(またはUDT)の議論は、Spark SQL でカスタム型のスキーマを定義する方法?

java.lang.UnsupportedOperationException: タイプ xxx のスキーマはサポートされていません

  • 実際には、 に関してこのようなエラーが発生する場合があります。Encoderこれは通常、カスタム タイプを使用する場合に発生しますがDataset[T]、カスタム タイプを使用する場合は発生しませんDataFrameEncoderカスタムオブジェクトをデータセットに保存する方法のポイントの議論?

データセットに格納されているタイプのエンコーダが見つかりません。プリミティブ型 (Int、String など) と製品型 (ケース クラス) は、sqlContext.implicits._ をインポートすることでサポートされます。他の型のシリアル化のサポートは、将来のリリースで追加される予定です。

私の理解では、どちらも内部の Spark SQL オプティマイザーに影響します (そのため、限られた数DataTypeの としかEncoder提供されていません)。DataFrameそしてとの両方DatasetがちょうどDataset[A]、それから..

質問(またはそれ以上..混乱)

  • なぜ最初のエラーは にのみ表示され、 に表示されDataFrameないのDataset[T]ですか? 2番目のエラーについて同じ質問...

  • 作成UDTすることで 2 番目のエラーを解決できますか? エンコーダーを作成すると、最初のエラーを解決できますか?

  • それぞれの関係をどのように理解し、DatasetSpark SQL エンジンとどのように相互作用するのでしょうか?

この投稿のイニシアチブは、2 つの概念をさらに探求し、オープン ディスカッションを引き付けることです。そのため、質問があまり具体的でない場合は、少しご容赦ください..そして、理解の共有を歓迎します. ありがとう。

0 投票する
0 に答える
64 参照

scala - kryo 期待値を使用した Scala Spark での Guava Cache のエンコード

私は GuavaCache (とscalacache wrapper ) を使用しており、いくつかのスパーク パイプラインでキャッシュ オブジェクト全体を保存して使用したいと考えています。

kryo Encoder を使用しSomeServiceて、キャッシュを含むケース クラスである をエンコードします。コードを実行すると、次の例外がスローされます。

Guava キャッシュはシリアライズ可能であるため、Kryo エンコーダーでエンコードできるはずだと考えました。LocalManualCacheクラスは Serializable も定義されています

  • グアバキャッシュを直接使用したときの同じエラー
  • asMap各レコードの TTL が失われるため、使用したくありません。

gauvaキャッシュオブジェクトを手動でエンコードおよびデコードできますか? それとも、カスタム キャッシュを使用できなくなるのでしょうか?