2017-01-08 10 views
0

Итак, я впервые использую NiFi. Я пытаюсь использовать его для вызова API, а затем для передачи данных в HDFS (Hortonworks Sandbox 2.4). В настоящее время я использую только 2 процессора: GetHTTP & PutHDFS.Внесение данных в HDFS с помощью Nifi - невозможно получить доступ к файлам

У меня, кажется, оба процессора настроены нормально ... они запускаются, но я не могу найти выходной файл, который был создан, когда я перехожу в Hadoop через Ambari ... Я установил выходной каталог как/user /, но ничего не появляется. Тем не менее, я получаю предупреждение на процессоре PutHDFS советуя:

WARNING PutHDFS[...] penalizing StandardFlowFileRecord[...] and routing to failure because file with same name already exists. 

... так что файл должен быть написан где-то получать. Я пробовал различать вызов API с указанием как xml, так и JSON-форматов, но не имеет очевидной разницы.

Я полагаю, что мне нужно либо добавить некоторую обработку в конвейер в NiFi, либо я ищу не в том месте в песочнице. Может ли кто-нибудь посоветовать, пожалуйста?

ответ

0

Наконец получил эту работу. Встроенный поток данных, включающий 4 процессора:

  • getHTTP
  • evaluateXPath
  • 2 х PutHDFS, один для 'соответствует', один для 'бесподобный'

Я думаю, что это был случай правильно указав «Автосвязь» (выбрав «успех» и «отказ» в).

Кредит http://nifi.rocks/getting-started-with-apache-nifi, который предоставил строительные блоки и благодарит других за комментарии.

3

Процессор PutHDFS считывает атрибут «filename» на входящем FlowFile и использует его как имя файла в HDFS. Как указано в Документации [1].

GetHTTP устанавливает атрибут «filename» как «.. имя файла на удаленном сервере» [2]. Поэтому я предполагаю, что процессор GetHTTP получает один и тот же файл каждый раз, и поэтому атрибут «filename» будет одинаковым для каждого FlowFile.

Поэтому, чтобы обойти эту ошибку, необходим процессор UpdateAttribute [3], который изменяет атрибут «filename» на уникальное значение.

[1] https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.hadoop.PutHDFS/index.html

[2] https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.standard.GetHTTP/index.html

[3] https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.attributes.UpdateAttribute/index.html

+0

Спасибо @ JDP10101. Возьмите свои баллы относительно ошибки, возникшей в результате последующих файлов с тем же названием. У меня будет игра с процессором UpdateAttribute, чтобы попытаться решить эту проблему. У меня все еще есть вопрос, почему я не могу видеть файл в HDFS? Вы знаете, почему это возможно, или когда я включил процессор UpdateAttribute, чтобы указать файл с расширением .xml, должен ли он стать видимым в выходном каталоге? Спасибо за вашу помощь. – Jon295087

+3

Если вы используете SSH в песочнице и запускаете «hadoop fs -ls/user /», вы видите файл? Как правило, вы не ставите данные непосредственно в/user, у вас будет подкаталог для конкретного пользователя. –

+0

Спасибо @BryanBende, но не боюсь. Когда я перечисляю все файлы в каталоге, я все еще не вижу выход.Я создал подкаталог '/ user/maria_dev/MetFiles/'и настроил процессор для вывода файла в это место, но я все еще ничего не вижу, когда я SSH в песочницу с PuTTy. Очень ценю предложения для всего, что я мог бы попробовать, пожалуйста. – Jon295087