1

私は、スパーク1.6とカフカ0.8.2.1を使用します。実行時にDStreamの値のスキーマを見つける方法は?

私はSpark Streamingを使用してカフカからデータを取得しようとしており、そのデータに対していくつかの操作を行います。

私はフェッチされたデータのスキーマを知っている必要があります。これにはいくつかの方法がありますか、フィールド名を使用してストリームから値を取得できますか?

答えて

0

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_jsondoes itとそれをコピーする)。

DataTypeオブジェクトには、fromJsonというメソッドが付属しています。このメソッドは、JSONエンコードされた文字列をDataTypeにスキーマを記述する「マップ」することができます。

fromJson(JSON:文字列):データ型

+0

それがスパーク・ストリーミングで行わ取得する方法について任意の提案、または任意の他の選択肢。 – JSR29

+0

ここに来る...私はそれがどのように聞こえるか知らせる...受け入れる! –

関連する問題