2016-06-06 2 views
4

Я пытаюсь реализовать рабочий ниже с помощью Apache Nifi:Apache Nifi Execute Process Processor

  1. ExecuteSQL - Это Извлечение данных из базы данных оракула в Avro формате
  2. PutHDFS -Этот должен поместите данные в hdfs
  3. ExecuteProcess - Этот процессор выполняет сценарий bash в фоновом режиме, который, в свою очередь, создает таблицу внешнего улья

У меня есть несколько вопросов:

ли ExecuteProcess процессор в Apache Nifi принимает входящие файлы потока?

Я не могу предоставить процессор ExecuteProcess любому входящему файлу потока. Если нет, есть ли способ поддержать прием входящих файлов потока?

ответ

9

ExecuteProcess не разрешает входящие файлы потока. Взгляните на процессор ExecuteStreamCommand, он принимает входящие файлы потока и также выполняет внешнюю команду.

+0

Мне нужно еще несколько разъяснений. В рабочем процессе, о котором я упомянул выше. Процессор SQl будет извлекать данные из oracle db в формате avro и хранить их в определенном месте? Мне нужно знать, где их размещение этих файлов. Следующим шагом потока является процессор PutHdfs, который скопирует файл с локальной машины в местоположение HDFS. Так будет ли это место на локальном компьютере? – Anonymous

+1

Как только данные находятся в NiFi, они хранятся во внутренних хранилищах NiFi, которые контролируются свойствами, установленными в conf/nifi.properties. ExecuteSQL будет извлекать данные из базы данных и создавать файл потока, который хранит записи в репозитории контента NiFi, затем передаст файл потока в отношение успеха, связанное с PutHDFS, и PutHDFS будет считывать записи из репозитория контента, действительно нужно знать, где это. –

3

Этот подход (с ExecuteStreamCommand) должен работать для текущей версии NiFi. NiFi 1.0.0 будет иметь процессор ConvertAvroToORC, который может транслировать записи Avro, поступающие с ExecuteSQL, в более эффективный формат ORC для Hive, а также генерирует (в атрибуте) Hive DDL, необходимый для создания таблицы (если она не уже существует). Также будет процессор PutHiveQL, который может выполнить этот DDL.

Это должно устранить необходимость в ExecuteStreamCommand в приведенном выше потоке. Я напишу примерный шаблон на https://cwiki.apache.org/confluence/display/NIFI/Example+Dataflow+Templates, когда выпущен NiFi 1.0.0.