Apache Nifi JOLTTransformJSON处理器

时间:2017-08-09 17:37:56

标签: apache-nifi twitter-streaming-api jolt

我有一个流程,旨在使用Get twitter处理器提取推文,我使用JOLTTransformJSON处理器提取包括主题标签在内的少数属性,我的Jolt规范如下

[
  {
"operation": "shift",
"spec": {
  "entities": {
    "hashtags": {
      "*": "hashtags"
    }
  },
  "text": "content",
  "id": "id",
  "timestamp_ms": "timestamp",
  "retweet_count": "retweetcount",
  "url": "url"
}
  },
  {
"operation": "default",
"spec": {
  "type": "twitter"
}
  },
  {
"operation": "cardinality",
"spec": {
  "hashtags": "MANY"
}
  }
 ]

当twitter输出包含主题标签时,JOLTTransformJSON处理器输出将以下列方式给我这些主题标签

{
"hashtags": [{
    "text": "Venus",
    "indices": [16,
    22]
},
{
    "text": "Cancer",
    "indices": [69,
    76]
},
{
    "text": "ascendant",
    "indices": [86,
    96]
}],
"content": "acmc_clock_euro #Venus is now (16h58m01s UT) setting at 10°32'50.2'' #Cancer opposite #ascendant at Helsinki, SF",
"id": 895332436975931393,
"timestamp": "1502298862104",
"retweetcount": 0,
"url": "https://twitter.com/pe602/status/895332436975931393",
"type": "twitter"
}

但是如果hashtags数组为空,如下

"entities": {
    "hashtags": []

输出将不包含主题标签,如果twitter op没有使用JOLT处理器的主题标签,如何使输出具有hashtags元素但使用空数组。

2 个答案:

答案 0 :(得分:0)

在你的第二个"默认"中试试这个操作

isChecked = "(\n    0,\n    0,\n    0\n)";

答案 1 :(得分:0)

通过使用“modify-default-beta”操作解决了这个问题,如下所示

{     “操作”:“modify-default-beta”,     “spec”:{        “hashtags”:[]     }   }