NiFiで、REST APIからのデータ取得

# ゴール
指定のREST API Endpointから情報を定期的に取得する。
ゴール１：取得した情報をマージして、HDFS(あるいはローカルファイル、S3）に保存する
ゴール２：取得したAPIのレスポンスJSONの特定PATHの値を取得する

# 全体図
<img width="1678" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/133516/0b9a3410-619b-2656-ddd0-e4046a1c9f51.png">


# 手順

## REST API コール
### InvokeHTTPプロセッサー利用
ScheduleタブのRun schedule値を0 secから 30 secに変更
<img width="983" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/133516/236afbd5-91b0-482a-4b8d-23aa5d0f9529.png">

Endpointなどの値を設定：
<img width="987" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/133516/9409a8b3-9051-4589-8d12-e603ea69f962.png">

### 値マージ：`` MergeContent ``プロセッサー利用
<img width="987" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/133516/cfce6584-90f9-5071-a720-623ff5d9c9a0.png">

### ローカルファイルに保存：PutFileプロセッサー
<img width="989" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/133516/22456acb-3d63-11ad-8f42-2573008745b2.png">

## JSONの特定PATHの値を取得し、組み立て直す
### 値取得：EvaluateJsonPathプロセッサー利用
<img width="989" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/133516/7884f82b-d7d5-4453-d548-6d66367d55ee.png">
* Propertiesタブの`` Destination ``値を ``flowfile-attribute`` に変更
* プラスアイコンをクリックし、新しいProperty-Valueを追加。
* Propertyは自分で定義し、ValueはJSONのパス

### ヤフー　天気情報のREST APIアカウント取得
* [APP申請結果.png](https://qiita-image-store.s3.amazonaws.com/0/133516/d315ffcd-d83c-9676-6ed7-9cba7e69476e.png)

### API実行結果
```json
{
  "ResultInfo": {
    "Count": 1,
    "Total": 1,
    "Start": 1,
    "Status": 200,
    "Latency": 0.003801,
    "Description": "",
    "Copyright": "(C) Yahoo Japan Corporation."
  },
  "Feature": [
    {
      "Id": "201810082015_139.73229_35.663613",
      "Name": "地点(139.73229,35.663613)の2018年10月08日 20時15分から60分間の天気情報",
      "Geometry": {
        "Type": "point",
        "Coordinates": "139.73229,35.663613"
      },
      "Property": {
        "WeatherAreaCode": 4410,
        "WeatherList": {
          "Weather": [
            {
              "Type": "observation",
              "Date": "201810082015",
              "Rainfall": 0.00
            },
            {
              "Type": "forecast",
              "Date": "201810082025",
              "Rainfall": 0.00
            },
            {
              "Type": "forecast",
              "Date": "201810082035",
              "Rainfall": 0.00
            },
            {
              "Type": "forecast",
              "Date": "201810082045",
              "Rainfall": 0.00
            },
            {
              "Type": "forecast",
              "Date": "201810082055",
              "Rainfall": 0.00
            },
            {
              "Type": "forecast",
              "Date": "201810082105",
              "Rainfall": 0.00
            },
            {
              "Type": "forecast",
              "Date": "201810082115",
              "Rainfall": 0.00
            }
          ]
        }
      }
    }
  ]
}
```

### 特定パスの値取得し、確認する
`` LogAttribute ``で値を随時確認出来る

### 文字列の変更
<img width="990" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/133516/4c3e57c9-cb9a-c50e-d7a5-c87b4f352725.png">
``ReplaceText``プロセッサー：
``Replacement Value``の値を変更。

### provenanceで値を確認
<img width="516" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/133516/f1dd5d58-599c-6c9c-e47f-a49d282d4985.png">
LogAttributeプロセッサーに右クリックし、メニューにある``View data provenance``を選ぶ。

data provenanceページが表示される：
<img width="1598" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/133516/ecb766b6-05c0-fd8a-d305-72deaff3a7db.png">
表示したいデータを選ぶ：

``Content``タブの``View``ボタンを押す：
<img width="991" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/133516/9fc3f9d0-c42a-3d48-a468-f2472ed7c880.png">


<img width="1639" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/133516/fdec0201-1d2a-7ca9-7f02-2adb337c944b.png">