2016-06-06 2 views
4

공정 프로세서 실행 :아파치 Nifi 제가 아파치 Nifi를 사용하여 아래의 워크 플로우를 구현하기 위해 노력하고

  1. ExecuteSQL가 - 아 브로 형식으로 오라클 데이터베이스에서이 가져 오는 데이터
  2. PutHDFS -이가이다
  3. ExecuteProcess -이 프로세서는 백그라운드에서 외부 하이브 테이블
  4. 를 생성하는 백그라운드에서 bash 스크립트를 실행합니다. 아파치 Nifi에서

    합니까 ExecuteProcess 프로세서가 들어오는 흐름 파일을 취

나는 몇 가지 질문이?

incomming 흐름 파일을 ExecuteProcess 프로세서에 제공 할 수 없습니다. 그렇지 않다면 들어오는 흐름 파일을 받도록 지원할 수있는 방법이 있습니까?

답변

9

ExecuteProcess는 들어오는 플로우 파일을 허용하지 않습니다. ExecuteStreamCommand 프로세서를 살펴보면 들어오는 플로우 파일을 허용하고 외부 명령도 실행합니다.

+0

나는 위에서 언급 한 워크 플로우에서 좀 더 자세한 설명이 필요하다 .Excute SQl 프로세서는 avro 형식의 오라클 db에서 데이터를 가져 와서 일부 위치에 유지한다? 나는 그 파일을 어디에 두는 지 알아야한다. 다음 단계는 로컬 시스템의 파일을 HDFS 위치로 복사하는 PutHdfs 프로세서입니다. 그러면 로컬 시스템의 위치가됩니까? – Anonymous

+1

데이터가 NiFi에 저장되면 conf/nifi.properties에 설정된 속성에 의해 제어되는 NiFi의 내부 리포지토리에 보관됩니다. ExecuteSQL은 데이터베이스에서 데이터를 가져오고 NiFi의 컨텐츠 저장소에 레코드를 저장하는 플로우 파일을 생성합니다. 그러면 플로우 파일을 PutHDFS에 연결된 성공 관계로 전송하고 PutHDFS는 컨텐츠 저장소에서 레코드를 읽습니다. 그것이 어디에 있는지 정말로 알 필요가 없습니다. –

3

이 방법 (ExecuteStreamCommand 사용)은 현재 NiFi 버전에서 작동해야합니다. NiFi 1.0.0은 ExecuteSQL에서 오는 Avro 레코드를 하이브 - 효율적인 ORC 포맷으로 변환 할 수있는 ConvertAvroToORC 프로세서를 가지며, 테이블을 생성하는 데 필요한 하이브 DDL도 생성합니다 (속성으로 생성하지 않습니다). 이미 존재). 또한 DDL을 실행할 수있는 PutHiveQL 프로세서가있을 것입니다.

위의 흐름에서 ExecuteStreamCommand를 제거해야합니다. NiFi 1.0.0이 출시되면 https://cwiki.apache.org/confluence/display/NIFI/Example+Dataflow+Templates에 예제 템플릿을 게시 할 예정입니다.