0

xmlファイルをavroに変換したい。データはxml形式で、最初にカフカのトピックにヒットします。次に、flumeまたはspark-streamingを使用して、xmlからavroに変換し、hdfsにファイルを格納することができます。私はクロウデラの環境を持っています。スパムストリーミングやflumeでXmlをAvroからKafka、hdfsに変換する

avroファイルがhdfsにヒットしたとき、後でそのファイルをハイブテーブルに読み込む必要があります。

私はこれを行うための最良の方法は何ですか? spark-avro(これはスパークストリーミングなし)のような自動化されたスキーマ変換を試みましたが、spark-avroはデータを変換しますが、ハイブはそれを読み取ることができません。 Spark avroはxmlをdataframeに変換し、次にdataframeからavroに変換します。 avroファイルは私のsparkアプリケーションでのみ読み取ることができます。これを正しく使用しているかどうかはわかりません。

私はavroスキーマに明示的なスキーマを定義する必要があると思います。これについてxmlファイルにどうやって行くのかは分かりません。それは複数の名前空間を持ち、非常に大規模です。

答えて

0

もしあなたがcloudera(flumeを持っているかもしれないので)であれば、morphlineを使ってレコードレベルで変換作業をすることができます。バッチ/ストリーミングを使用することができます。詳細はhereをご覧ください。

+0

モルフォラインがxmlを読み込んでavroに変換できるかどうか知っていますか? – Defcon

+0

Morphlineはxmlの内容を読むことができ、avroに書き込むことができます。あなたのユースケースのための直接変換コマンドはありません。あなたはmorphlineの使い方を研究することも、map/reduce/sparkの仕事を計画して各ファイル/レコードを読み込んでavroに変換することもできます。 Morphlineは、バッチ式および水路使用の準備ができています。 – Ramzy

関連する問題