Как мне использовать FreeFormTextRecordSetWriter - PullRequest
0 голосов
/ 27 марта 2019

Я мой контроллер Nifi. Я хочу настроить FreeFormTextRecordSetWriter, но я понятия не имею, что я должен поместить в поле "Text".Я получаю текст из моего источника (в моем случае GetSolr), и просто хочу написать это, точка.Документация и список рассылки, кажется, не говорят мне, как это делается, любая помощь приветствуется.

РЕДАКТИРОВАТЬ: Вот пример ввода-вывода я хочу достичь (как вы можете видеть: не требуется преобразование, простотекст, без ввода JSON)

РЕДАКТИРОВАТЬ: теперь я понимаю, что я не могу сказать GetSolr возвращать только данные CSV - но я должен использовать Json Так что ссылки с атрибутомвроде бы нормально.В документации не указано, что атрибут $ {flowFile} должен содержать полный возвращаемый файл потока.

Пример ввода:

{
  "responseHeader": {
    "zkConnected": true,
    "status": 0,
    "QTime": 0,
    "params": {
      "q": "*:*",
      "_": "1553686715465"
    }
  },
  "response": {
    "numFound": 3194,
    "start": 0,
    "docs": [
      {
        "id": "{402EBE69-0000-CD1D-8FFF-D07756271B4E}",
        "MimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
        "FileName": "Test.docx",
        "DateLastModified": "2019-03-27T08:05:00.103Z",
        "_version_": 1629145864291221504,
        "LAST_UPDATE": "2019-03-27T08:16:08.451Z"
      }
    ]
  }
}

Требуемый вывод

{402EBE69-0000-CD1D-8FFF-D07756271B4E}

Кстати: документация гласит:

Текст, используемый при записи результатов.Это свойство будет оценивать язык выражений, используя любое из полей, доступных в записи.Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и реестра переменных)

Я хочу использовать исходный текст, поэтому я в замешательстве

1 Ответ

2 голосов
/ 27 марта 2019

Вам необходимо использовать язык выражений, как если бы поля записи были атрибутами FlowFile.Пример:

Ввод:

{
  "t1": "test",
  "t2": "ttt",
  "hello": true,
  "testN": 1
}

Text свойство в FreeFormTextRecordSetWriter:

${t1} k!${t2} ${hello}:boolean

${testN}Num

Вывод (с использованием ConvertRecord):

test k!ttt true:boolean

1Num

РЕДАКТИРОВАТЬ:

Похоже, что вам нужно было читать из Solr и написать один столбец CSV.Вам нужно использовать CSVRecordSetWriter.Что касается того же, я должен сказать вам рассмотреть возможность обновления до 1.9.1.Начиная с 1.9.0, схема может быть выведена за вас.

в противном случае вы можете установить Schema Access Strategy как Use 'Schema Text' Property, затем используйте следующую схему в тексте схемы

{
  "name": "MyClass",
  "type": "record",
  "namespace": "com.acme.avro",
  "fields": [
    {
      "name": "id",
      "type": "int"
    }
  ]
}

это должно работать, я отредактирую это в своем ответе.Если это работает для вас, пожалуйста, выберите мой ответ:)

...