私は、スパーク1.6とカフカ0.8.2.1を使用します。実行時にDStreamの値のスキーマを見つける方法は?
私はSpark Streamingを使用してカフカからデータを取得しようとしており、そのデータに対していくつかの操作を行います。
私はフェッチされたデータのスキーマを知っている必要があります。これにはいくつかの方法がありますか、フィールド名を使用してストリームから値を取得できますか?
私は、スパーク1.6とカフカ0.8.2.1を使用します。実行時にDStreamの値のスキーマを見つける方法は?
私はSpark Streamingを使用してカフカからデータを取得しようとしており、そのデータに対していくつかの操作を行います。
私はフェッチされたデータのスキーマを知っている必要があります。これにはいくつかの方法がありますか、フィールド名を使用してストリームから値を取得できますか?
TL;(。古いスパーク1.6とESP)DRそれは、しかし、不可能ではないのどちらかではない可能直接です。
カフカはバイトを見ており、これがスパークストリーミングの予想です。 何とかは固定フィールドにスキーマ(おそらくJSONエンコードされた文字列)を取得し、他のフィールドをデコードするためにいくつかの追加情報を渡す必要があります。箱からは入手できませんが、確かに実行可能です。提案として
、Iはvalue
フィールドは常に(JSON形式)(値フィールドの)スキーマ及び値自体を持つ2つのフィールドのデータ構造であろうメッセージを送るだろう。
その後、from_json機能のいずれかを使用できます。
from_json(E:カラム、スキーマ:StructType):カラムは、指定されたスキーマを持つStructTypeにJSON文字列を含む列を解析します。
from_json
を考えると、あなたはそれがちょうど見(対応する構造に文字列値をデシリアライズしたい独自のカスタムユーザー定義関数(UDF)を登録する必要があるだろう、スパーク2.1.0で追加されたかfrom_json
does itとそれをコピーする)。
DataType
オブジェクトには、fromJsonというメソッドが付属しています。このメソッドは、JSONエンコードされた文字列をDataType
にスキーマを記述する「マップ」することができます。
fromJson(JSON:文字列):データ型
それがスパーク・ストリーミングで行わ取得する方法について任意の提案、または任意の他の選択肢。 – JSR29
ここに来る...私はそれがどのように聞こえるか知らせる...受け入れる! –