2

Nifi を使用して、json ファイルを構造化テーブルにロードすることは可能ですか?

次の天気予報データ (6000 の気象観測所から) を呼び出しました。現在、HDFS に読み込んでいます。すべてが 1 行に表示されます。

{"SiteRep":{"Wx":{"Param":[{"name":"F","units":"C","$":"Feels Like Temperature"},{"name":"G","units":"mph","$":"Wind Gust"},{"name":"H","units":"%","$":"Screen Relative Humidity"},{"name":"T","units":"C","$":"Temperature"},{"name":"V","units":"","$":"Visibility"},{"name":"D","units":"compass","$":"Wind Direction"},{"name":"S","units":"mph","$":"Wind Speed"},{"name":"U","units":"","$":"Max UV Index"},{"name":"W","units":"","$":"Weather Type"},{"name":"Pp","units":"%","$":"Precipitation Probability"}]},"DV":{"dataDate":"2017-01-12T22:00:00Z","type":"Forecast","Location":[{"i":"14","lat":"54.9375","lon":"-2.8092","name":"CARLISLE AIRPORT","country":"ENGLAND","continent":"EUROPE","elevation":"50.0","Period":{"type":"Day","value":"2017-01-13Z","Rep":{"D":"WNW","F":"-3","G":"25","H":"67","Pp":"0","S":"13","T":"2","V":"EX","W":"1","U":"1","$":"720"}}},{"i":"22","lat":"53.5797","lon":"-0.3472","name":"HUMBERSIDE AIRPORT","country":"ENGLAND","continent":"EUROPE","elevation":"24.0","Period":{"type":"Day","value":"2017-01-13Z","Rep":{"D":"NW","F":"-2","G":"43","H":"63","Pp":"3","S":"25","T":"4","V":"EX","W":"3","U":"1","$":"720"}}}, .....

理想的には、スキーマを 6000 行のテーブルに構造化する必要があります。

上記を Pig に渡すスキーマを作成しようとしましたが、うまくいきませんでした。おそらく、これを正しく変換できるほど json に精通していないためです。

データに何らかの構造を追加する簡単な方法を探していると、Nifi に PutHBaseJson プロセッサがあることがわかりました。

この PutHBaseJson プロセッサが上記のデータ構造で動作するかどうか、誰にもアドバイスできますか? もしそうなら、誰かが私に構成の出発点を与えるためのまともなチュートリアルを教えてもらえますか?

ご指導をよろしくお願いいたします。

4

1 に答える 1

3

プロセッサを使用してSplitJson、6000 レコードの JSON 構造を 6000 個の個別のフローファイルに分割することをお勧めします。トップレベルの応答からパラメータ定義を「注入」する必要がある場合は、個々の JSON レコードを操作するReplaceTextorJoltTransformJSON操作を実行できます。これは、NiFi で Jolt 変換 (JSON -> JSON) を実行する方法を説明している Yolanda Davis による優れた記事です。

単一の JSON レコードを含む個々のフローファイルを取得したら、それらを HBase に配置するのは非常に簡単です。Bryan Bende は、プロセッサに必要な構成を説明する記事を書きました。PutHBaseJson

于 2017-01-13T01:31:26.270 に答える