我喜歡Kusto (或商用版本 Azure Data Explorer,簡稱 ADX) 是大家可以有目共睹的,之前還專門寫過這方面的書籍,請參考 [大數據分析新玩法之Kusto寶典](https://kusto.book.xizhang.com), 很可能在今年還會推出第二季,正在醞釀題材和場景中。 ...
我喜歡Kusto (或商用版本 Azure Data Explorer,簡稱 ADX) 是大家可以有目共睹的,之前還專門寫過這方面的書籍,請參考 大數據分析新玩法之Kusto寶典, 很可能在今年還會推出第二季,正在醞釀題材和場景中。
為了使用Kusto,你既可以購買正式的服務(Azure Data Explorer)用於生產環境,也可以註冊免費版https://aka.ms/kustofree來做研究和試驗。而今天我要給大家介紹的是,你還可以在本地運行自己的Kusto伺服器(官方叫法是模擬器)呢。
請註意,模擬器是沒有技術支持的,建議不要用於生產環境啊。
你可以通過 https://learn.microsoft.com/en-us/azure/data-explorer/kusto-emulator-overview 這個文檔瞭解詳細信息,但我這裡給大家一個實操的步驟,避免大家走彎路。
我推薦使用linux 的容器來做,而不是Windows,而且我當然推薦大家在啟動容器的時候,把本地的磁碟mount上去,這樣你自己創建的資料庫,就可以在下次啟動容器時還原回來。下麵著重講解幾個關鍵步驟。
1. 啟動容器
docker run -v /mnt/c/kustodata:/kustodata -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer-linux:latest
我用的是ubuntu伺服器,通過WSL來啟動的,所以你可以看到/mnt/c/kustodata 這個目錄,其實是我的宿主機Windows上面C 盤下麵的一個目錄,然後我們映射到容器里的 /kustodata這個目錄。
2. 使用Kusto Explorer 來連接
這裡的關鍵是,本地伺服器只支持 http 協議,而且不需要身份驗證(請用自己的方式來保證安全性),所以你在連接時的連接字元串應該是下麵這樣的。
3. 創建資料庫
這個沒有特別的,你可以用下麵的語法來創建資料庫。
.create database test persist (
@"/kustodata/test/md",
@"/kustodata/test/data"
)
這個查詢是在容器裡面執行的,所以這裡的路徑也應該是容器裡面的路徑,這也就是為什麼我們此前要映射目錄的原因了。
一旦創建資料庫,你就可以正常地進行數據方面的操作了,例如創建表格,導入數據等。
# 創建表格
.create table test(id:int,name:string)
# 導入數據,按行導入
.ingest inline into table test <|
1,'ares'
# 導入數據,從文件導入
.ingest into table test(@'/kustodata/data.csv') with(format ='csv', ignoreFirstRecord =true)
4. 關閉伺服器
既然是本地伺服器,你就可以完全控制它,按照你的需求可以隨時關閉它。因為它是容器啟動的,所以要關閉它也很簡單,通常用一句命令即可。
# xxxx 是容器編號,一般取前4位即可。通過 docker ps 可以看到當前正在運行的容器,以及他們的編號
docker stop xxxx
5. 重啟後還原資料庫
最後一個關鍵步驟是,如何重啟後還原資料庫。因為容器如果關閉的話,數據會全部丟失,為了確保你的數據在下次啟動時還在,你必須把它映射到外部宿主環境的一個目錄來。
此處你可以用到一個未公開的命令。
.attach database test from @'/kustodata/test/md'
希望對大家有所幫助,歡迎反饋和交流。