2017-06-27 2 views
1

フェローズTechies - 私は時間に数千人のVIN#をhttps://vpic.nhtsa.dot.gov/api/に移動して、それぞれに関連付けられた機能の配列を解析する最良の方法を決定しようとしています。私はDecodeVINValuesBatchとDecodeVINという2つの方法を選択できます。バッチバージョンでは配列が可能ですが、DecodeVINは単一の参照です。 .NET/C#またはJBOSS + DBMS環境では、最初にDecodeVINValuesBatchを呼び出すことで問題に近づき、処理中にデータセットを書き出しながらvPICコレクションの各値Idを取得することがわかりました。私はセット理論がNiFiで何か異なっているとは思っていませんが、私はこのツールに慣れていませんし、連続入力ストリーム上で複数のセットを処理するという解決策を代表する例は見つかりません。これについての私の考えは、VIN#の+複数の他のデータをキャプチャするInvokeHTTPプロセッサから始め、データの複数の部分を別々のプロセッサに分割することです。これらのプロセッサの1つは、NHTSAへの外部呼び出しを行うためにVIN#を別のInvokeHTTPプロセッサに分離する必要があります。一方で、この文脈では、単一のDecodeVINがより良い選択であるように見える。一方、私はこのデータをどのように管理するのが最善か疑問に思っています。欠落したデータ、重複したものなどについて考えなければならないのですか?そのため、セットで処理する準備ができていますか?私は、生産品質のNiFiインプランテーションのための指針とベストプラクティスを探しています。何かアドバイス?Apache NiFi 1.3:vts#のセットをhtsa.dot.gov APIに渡す方法は?

答えて

1

リンク先のAPIを解決できませんが、このタイプの動作を実行するための一般的なパターンがあります。

InvokeHTTPプロセッサは、リモートHTTPエンドポイントからデータを取得するのに最適な候補です。結果のフローファイルの内容には、HTTP呼び出しからの応答が含まれます。たとえば、JSON形式であるとします。利用できるAPIメソッドのあなたの説明の私の理解が正しければ、あなたは2つのオプションがあります。

  1. DecodeVINは、単一のVIN値を受け入れ、特定のVIN
  2. DecodeVINValuesBatchのためのいくつかのデータセットを返しますが、VIN値の配列を受け取り、提供されたVINに対応するデータセットの配列を返します

「数千」のVIN /時間のスループットを達成しようとしている場合は、2番目のオプションをお勧めします。ネットワークオーバヘッドを大幅に削減し、レコードを分割する無駄な処理を削減します。

データの受信フォーマットをそのバッチメソッドの許容できる引数に変換するには、ConvertRecordプロセッサと関連するRecordReaderおよびRecordSetWriterコントローラサービスファミリを調べる必要があります。この機能はApache NiFi 1.2.0(および1.3.0で強化されました)で導入され、任意のストリームのデータをフォーマットとは無関係に変換、照会、および強化することができます。ブライアン・ベンデはintroductory guide to using the components、マーク・ペインはrecord conversion processrealtime querying、そしてRecordPath Guideは包括的な参考資料です。

バッチAPI用の適切なフォームに変換されたら、InvokeHTTPを使用してルックアップ操作を実行し、HTTP応答を含む送信フローファイルを処理するか、新しいLookupRecordプロセッサを使用できますScriptedLookupServiceを含むLookupServiceコントローラーサービスを使用して、任意のPython/Groovy/Rubyコードを書き出し操作(つまり、レコードを充実させるためのHTTP呼び出し)を行うことができます。

PartitionRecordこれは、いくつかのRecordPath式(不良なデータレコード、無関係なレコードなどのフィルタリング)に基づいて "類似"のレコードをグループ化することを可能にします。最後に、完全を期すために、あなたがに興味がある可能性がありQueryRecordSplitRecord、およびUpdateRecordプロセッサもあります。

前1.2.0に、ConvertCSVToJSONSplitTextのような個々の変換プロセッサは、おそらく必要があったが、この新しいパラダイムているだろうあなたのユースケースによく合うはずです。

+0

アンディ、お返事ありがとうございました。ほんとうにありがとう。私はあなたが参照したブログ/事例/プロセッサーファミリーを研究します。一貫性のために、私は元の投稿のURLを修正します。 – plditallo

関連する問題