本文介紹通過Lindorm-cli連接Lindorm流引擎的具體操作和使用示例。
前提條件
注意事項
如果您的應用部署在ECS實例,且想要通過專有網絡訪問Lindorm實例,則需要確保Lindorm實例和ECS實例滿足以下條件,以保證網絡的連通性。
所在地域相同,并建議所在可用區相同(以減少網絡延時)。
ECS實例與Lindorm實例屬于同一專有網絡。
連接Lindorm流引擎使用的網絡類型
網絡類型 | 說明 |
專有網絡(推薦) | 專有網絡VPC(Virtual Private Cloud)是您自己獨有的云上私有網絡,不同的專有網絡之間二層邏輯隔離,擁有較高的安全性和性能。Lindorm-cli部署在ECS實例上時,通過專有網絡連接至Lindorm流引擎,可獲得更高的安全性和更低的網絡延遲。 |
公網 | 公網即互聯網,當本地設備需要測試或管理Lindorm流引擎時,可在本地設備上部署Lindorm-cli,然后通過公網連接至Lindorm流引擎。 說明 通過公網連接不會產生流量費用,但存在一定的安全風險,推薦通過專有網絡連接以獲取更高的安全性。 |
操作步驟
在ECS上執行以下命令下載Lindorm-cli壓縮包。
wget https://hbaseuepublic.oss-cn-beijing.aliyuncs.com/lindorm-sqlline-0.1.4.tar.gz
執行以下命令解壓Lindorm-cli壓縮包。
tar zxvf lindorm-sqlline-0.1.4.tar.gz
進入
lindorm-sqlline-0.1.4/bin
目錄,執行以下命令連接至Lindorm流引擎。使用Lindorm流引擎。
通過Lindorm流引擎將日志數據進行轉化后實時同步至Lindorm寬表中,并對日志數據進行多維檢索操作。本示例的操作流程如下:
準備工作
通過Lindorm-cli連接Lindorm寬表引擎,并在Lindorm寬表中創建一張表,具體操作請參見通過Lindorm-cli連接并使用寬表引擎。
CREATE TABLE IF NOT EXISTS log ( loglevel VARCHAR, thread VARCHAR, class VARCHAR, detail VARCHAR, timestamp BIGINT, primary key (timestamp) );
通過Lindorm-cli連接Lindorm流引擎。
./lindorm-sqlline -url jdbc:streamsql:url=http://ld-bp17pwu1541ia****-proxy-stream.lindorm.rds.aliyuncs.com:30060 -u root -p root
操作步驟
在Lindorm流引擎中創建數據流表。
CREATE STREAM IF NOT EXISTS originalData ( `loglevel` STRING, `thread` STRING, `class` STRING, `detail` STRING, `timestamp` LONG ) WITH ( value_format = 'json', //表示數據源的格式 key_value = 'thread', //表示分區鍵 stream_topic = 'log_topic', //指定數據流表的物理數據存儲在流存儲的某個Topic上 TIMESTAMP = 'timestamp' //指定時間戳列 );
創建成功后,通過以下命令查看結果:
list streams;
執行結果如下:
+-------------------------------------------------------------------------------------+ | ShowStreams | +-------------------------------------------------------------------------------------+ | Stream Name | Stream Topic | Format -------------------------------------- originalData | log_topic | JSON -------------------------------------- | +-------------------------------------------------------------------------------------+ 1 row selected (0.13 seconds)
創建Serving表。Serving表示用于提供查詢能力,例如點查詢、范圍查詢、多維檢索、全文檢索、向量檢索、時序查詢、時空查詢、圖查詢、交互式分析等。Serving表對于Lindorm流引擎來說是一個外表,源數據存儲在Lindorm寬表中,通過以下語句來關聯Lindorm寬表。
CREATE External Table IF NOT EXISTS lindorm_log_table WITH ( table_type = 'lindorm.table', table_name = 'log', endpoint = 'ld-bp17pwu1541ia****-proxy-lindorm.lindorm.rds.aliyuncs.com:30020' );
說明table_type
:表示源數據存儲在Lindorm寬表引擎中。table_name
:表示Lindorm寬表的表名。endpoint
:Lindorm寬表引擎中HBase兼容的專有網絡連接地址。
創建成功后,通過以下命令查看結果:
list external tables;
執行結果如下:
+-------------------------------------------------------------------------------------------+ | ShowExternalTables | +-------------------------------------------------------------------------------------------+ | External Table Name --------------------- lindorm_log_table --------------------- | +-------------------------------------------------------------------------------------------+ 1 row selected (0.024 seconds)
創建流處理鏈路。將數據流表中的日志數據同步寫入Serving表中,同時過濾出loglevel等于error的日志。
CREATE CQ log_to_lindorm Insert Into lindorm_log_table Select loglevel, thread, class, detail, timestamp From originalData Where loglevel = 'ERROR';
寫入數據。通過Kafka API寫入數據至指定的Topic(名稱為log_topic)中,具體操作請參見通過開源Kafka客戶端寫入Lindorm流引擎數據。
查詢數據。通過以下兩種方式都可以查詢流處理鏈路的結果。
通過Lindorm-cli連接Lindorm寬表引擎并查詢處理結果。
lindorm_log_table
為Serving表的名稱。SELECT * FROM lindorm_log_table;
通過Lindorm寬表引擎的集群管理系統查詢處理結果,具體操作請參見數據查詢。