使用JoltTranform处理器的Apache Nifi转换

时间:2018-10-09 10:46:04

标签: json apache apache-nifi jolt

我有一些属性myId,计数。现在,使用这些属性,我想记下Jolt格式以获取以下输出。

{
  "projectId": "projectId",
  "ticketId": "NO_TICKET",
  "trigger": "SCHEDULED_BACKLOG",
  "timestamp": 1539060316494,
  "pivotVersion": 1,
  "pivotType": "FlattenedTodoStats",
  "todoCount": "todoCount",
  "pivots": [
    {
      "state": "BACKLOG",
      "type": "NA"
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用 Jolt Transform(或)ReplaceText 处理器。

由于您具有流文件的某些属性,因此请使用ReplaceText处理器 enter image description here

在“替换值”中配置为

{
    "projectId": "${projectId}",
    "ticketId": "${ticketId}",
    "trigger": "${trigger}",
    "timestamp": "${timestamp}",
    "pivotVersion":"${pivotVersion}",
    "pivotType":"${pivotType}",
    "todoCount":"${todoCount}",
    "pivots[]": {
      "*": {
        "state": "${state}",
        "type": "${type}"
      }
    }
}

用您的属性名称替换所有属性名称($ {projectId} .. etc)

使用替换策略作为始终替换

(或)

如果您想在这种情况下使用Jolt,则

使用默认操作替换您的属性值并准备json message

示例:

enter image description here 震动规范

[{ "operation": "shift", "spec": { "z":"z" } }, { "operation": "default", "spec": { "projectId": "${projectId}", "ticketId": "${ticketId}", "trigger": "${trigger}", "timestamp": "${timestamp}", "pivotVersion":"${pivotVersion}", "pivotType":"${pivotType}", "todoCount":"${todoCount}", "pivots[]": { "*": { "state": "${state}", "type": "${type}" } } } }]

由于我没有任何属性值,因此我的输出json中包含所有空值。

根据您的要求更改规格震动规格。