kuiper流式計算完整實例演示

背景

前面文章分享瞭如何安裝kuiper和kuiper-manager,本篇文章通過一個完整的例子來演示kuiper的一個比較完整的流式計算。

下圖仍舊使用了kuiper官網文檔中的圖,我在裏面稍微加了一些註釋:


流式計算創建操作過程

kuiper的流式計算創建於操作分爲如下幾個步驟:

  1. 使用命令行/rest/控制檯創建一個流(對應sources)
  2. 基於創建的流編寫路由規則(對應sql/rule部分)
  3. 使用mqtt工具給mqtt broker發送消息(上文中kuiper使用emqx作爲其mqtt broker)
  4. kuiper將符合路由規則的數據轉發到目的地(sinks)

創建一個流

1)docker命令行方式

# 進入kuiper容器
docker exec -it kuiper /bin/bash
# 創建一個流,定義了temperature和humidity這兩個字段,後面會對應mqtt消息(payload)的兩個字段,其中DataSource可以理解爲訂閱的topic
bin/kuiper create stream demo2 '(temperature float, humidity bigint) WITH (FORMAT="JSON", DATASOURCE="demo2")'

2) rest方式

#-d指定了stream的具體數據
curl -H "Content-Type: application/json" -X POST -d '{"sql":"create stream demo2 (temperature float, humidity bigint) WITH ( datasource = \"demo2\",FORMAT = \"json\")"}' http://localhost:9081/streams

創建規則

1)docker命令行

#編寫rule規則文件myRule,過濾temperature>30的數據,並輸出到log裏面(使用了kuiper的log插件),內容如下
{
    "sql": "SELECT temperature from demo2 where temperature > 30",
    "actions": [{
        "log":  {}
    }]
}

#命令行創建規則,指定ruleid爲ruleDemo
bin/kuiper create rule ruleDemo -f myRule

2) rest方式

curl  -H "Content-Type: application/json"  -X POST -d '{"id":"ruleDemo","sql":"SELECT temperature from demo2 where temperature > 30","actions":[{"log":{}}]}'  http://localhost:9081/rules

3)發送mqtt消息給emqx

#給emqx(192.168.200.2)發送{"temperature": 40, "humidity" : 20},指定topic爲demo2
mosquitto_pub -h 192.168.200.2 -m '{"temperature": 40, "humidity" : 20}' -t demo2

4)可以在kuiper的日誌中看到規則過濾後的數據

 

 以上就是kuiper流式計算的例子。總結一下:kuiper運行在某個邊緣設備(這裏是一臺虛機)上,訂閱了emqx的topic:demo2,當有{"temperature": 40, "humidity" : 20}這樣的數據上報的時候,kuiper的規則引擎會通過sql將數據輸出到log中。


博主:測試生財

座右銘:專注測試與自動化,致力提高研發效能;通過測試精進完成原始積累,通過讀書理財奔向財務自由。

csdn:https://blog.csdn.net/ccgshigao

博客園:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章