2017-10-19 11 views
1

私はListenHTTPをNifiプロセスの入力ポイントとして使用します。データを注入するとNifiがクラッシュする

私は完全に100Mbの周りを取るCSVファイルからデータを送信します。

import requests 
import csv 
import pandas as pd 
import json 
import time 

url = 'http://localhost:8085/contentListener' 

df = pd.read_csv('demo_dataset.csv') 

for i in df.index: 
    data = df.iloc[i].to_json() 
    r = requests.post(url, data=data, allow_redirects=True) 
    time.sleep(0.1) 

問題がNifiを約3000項目を処理した後にクラッシュしてしまうことです。それから、再起動する前に手動でログとflowfile_repositoryフォルダを空にしておく必要があります。

NifiプロセッサListenHTTPまたはNifi itslefにこの問題の解決に役立つパラメータがありますか?

答えて

1

質問は少し不明です - Apache NiFiは3000個の100Mbファイルまたは3000個のファイルを1つのファイルから処理した後にクラッシュしますか?最初のケースでは、それはストレージ/ヒープの問題だと思います。あなたは$NIFI_HOME/logs/nifi-app.logからスタックトレースを提供していただけますか?

NiFi 1.2.0以降を使用できる場合は、パフォーマンスがはるかに優れ、フローが設計しやすくなるため、record processorsを使用して操作することをおすすめします。 100MbのCSVファイルを1回の操作(またはGetFileを使用)として送信し、ファイル内の各行でさまざまなプロセッサを個別に動作させることができます。

+0

これは、 'ListenHTTP'を使って1つのファイルから3000行を送信した後に起こります。 'GetFile'を使うことをお勧めしますか?私の目的は100Mbのデータ(約100万行)をNifiプロセッサに渡すことです。 – Dinosaurius

+0

さらに、 'ListenHTTP'はおそらく100Mbのデータを注入する最良のオプションではありません。プロセスには多くの時間がかかり、httpに関連する問題があります(タイムアウトを設定してtime.sleepを使用する必要があります)。 'ListFile' - >' FetchFile' - > ???を使うことができますか?私のCSVファイルを1行ずつ読み込み、各行をJSON文字列に変換するために(私のPythonコードのように)? – Dinosaurius

+0

ファイルシステムからファイルを読み込むことは間違いなく良いでしょう。 HTTP仕様は大きなファイル転送には適していません。 'GetFile'や' ListFile'/'FetchFile'の方がパフォーマンスが向上し、ファイルの行を簡単に解析することができます。 – Andy

関連する問題