2016-07-13 2 views
0

Nifi를 통해 Oracle 데이터베이스에서 데이터를 가져 오려고합니다. 캔버스에서 파일 크기가 0KB 인 "GenerateFlowFile"프로세서를 매 5 분마다 실행하도록 예약했습니다. 이는 성공시 "ExecuteSQL"프로세서를 트리거하는 것입니다. "ExecuteSQL"의 경우 DB 연결 풀링 서비스를 DBCPConnectionPool로 설정합니다. SQL 쿼리 "SELECT * FROM SOMETABLE"을 입력합니다. 내 DBCPConnectionPool 구성은 다음과 같습니다.ExecuteSQL이 수행하지 않습니다.

실행하려고하면 아무 일도 일어나지 않습니다. 빨간색 상자가 녹색으로 바뀌고 "ExecuteSQL"프로세서의 오른쪽 위 모서리에 숫자 1이 표시됩니다. 그러나 아무 일도 일어나지 않습니다. 그럼 내가 그것을 멈추었을 때, 여전히 액티브 쓰레드는 1입니다.
제가 이것을 처음 사용하는 이유는 무엇입니까? 고맙습니다. 원래 게시물에 대한 답변이 때문에

+0

NiFi 로그 파일을 확인 했습니까? –

+0

NiFi의 버전은 무엇입니까? 그리고 당신이 선택한 테이블이 얼마나 큰가요? 연결에 매달려 있거나 정말로 긴 시간이 걸리는 것 같습니다. 완료되었는지 얼마나 기다렸습니까? –

+0

죄송합니다. 아무 일도 일어나지 않을 것이라고 생각했기 때문에 매우 큰 테이블에서 선택했습니다. 작은 테이블에서 쿼리를 시도했지만 작동하지만 동일한 레코드 집합을 쿼리하는 것이 계속됩니다. 레코드 집합이 같은 경우 쿼리를 중지 할 수 있습니까? – iPhoneJavaDev

답변

1

, 나는 그것의 의견 내 질문에 응답합니다 :

당신은 매 30 초 정도 실행하는 GenerateFlowFile 프로세서를 설정할 수 있습니다, 다음 시작하고 즉시 중지합니다. 이로 인해 ExecuteSQL은 정확히 한 번 실행되어 모든 행을 가져옵니다.

다른 방법으로 (NiFi 0.6.0+에서) QueryDbTable 프로세서를 사용할 수 있습니다.이 프로세서는 처음에는 모든 행을 가져 오지만 (증가하는 기본 키와 같은 최대 값 열을 기반으로 함) 추가됩니다.

관련 문제