apache iotdb_Apache-IoTDB
IoTDB
簡介
IoTDB (Internet of Things Database) 是一個時序數據的數據管理系統,可以為用戶提供數據收集、存儲和分析等特定的服務。IoTDB由于其輕量級的結構、高性能和可用的特性,以及與Hadoop和Spark生態的無縫集成,滿足了工業IoTDB領域中海量數據存儲、高吞吐量數據寫入和復雜數據分析的需求。
主要特點
IoTDB的主要特點如下:
靈活的部署策略。IoTDB為用戶提供了一個在云平臺或終端設備上的一鍵安裝工具,以及一個連接云平臺和終端上的數據的數據同步工具。
硬件成本低。IoTDB可以達到很高的磁盤存儲壓縮比。
高效的目錄結構。IoTDB支持智能網絡設備對復雜時間序列數據結構的高效組織,同類設備對時間序列數據的組織,海量復雜時間序列數據目錄的模糊搜索策略。
高吞吐量讀寫。IoTDB支持數以百萬計的低功耗設備的強連接數據訪問、高速數據讀寫,適用于上述智能網絡設備和混合設備。
豐富的查詢語義。IoTDB支持跨設備和測量的時間序列數據的時間對齊、時間序列字段的計算(頻域轉換)和時間維度的豐富聚合函數支持。
學習成本非常低。IoTDB支持類似sql的語言、JDBC標準API和易于使用的導入/導出工具。
與先進的開放源碼生態系統的無縫集成。IoTDB支持分析生態系統,如Hadoop、Spark和可視化工具(如Grafana)。
目錄
快速開始
環境準備
安裝
從源碼構建
配置
開始
啟動 IoTDB
使用 IoTDB
使用 Cli 命令行
基本的 IoTDB 命令
停止 IoTDB
只編譯 server
只編譯 cli
使用 import-csv.sh
創建元數據
從 csv 文件導入數據的示例
運行 import shell
錯誤的數據文件
使用 export-csv.sh
運行 export shell
執行查詢
快速開始
這篇簡短的指南將帶您了解使用IoTDB的基本過程。如需更詳細的介紹,請訪問我們的網站用戶指南。
環境準備
要使用IoTDB,您需要:
Java >= 1.8 (目前 1.8、11和13 已經被驗證可用。請確保環變量境路徑已正確設置)。
Maven >= 3.1 (如果希望從源代碼編譯和安裝IoTDB)。
設置 max open files 為 65535,以避免"too many open files"錯誤。
安裝
IoTDB提供了三種安裝方法,您可以參考以下建議,選擇最適合您的一種:
從源代碼安裝。如果需要自己修改代碼,可以使用此方法。
從二進制文件安裝。推薦的方法是從官方網站下載二進制文件,您將獲得一個開箱即用的二進制發布包。
在這篇《快速入門》中,我們簡要介紹如何使用源代碼安裝IoTDB。如需進一步資料,請參閱《用戶指南》第3章。
從源碼構建
從 git 克隆源代碼:
git clone https://github.com/apache/incubator-iotdb.git
默認的主分支是dev分支,如果你想使用某個發布版本x.x.x,請切換分支:
git checkout release/x.x.x
在 incubator-iotdb 根目錄下執行 maven 編譯:
> mvn clean package -DskipTests
執行完成之后,可以在distribution/target/apache-iotdb-{project.version}-incubating-bin.zip找到編譯完成的二進制版本(包括服務器和客戶端)
注意:"service-rpc/target/generated-sources/thrift" 和 "server/target/generated-sources/antlr4" 目錄需要添加到源代碼根中,以免在 IDE 中產生編譯錯誤。
配置
配置文件在"conf"文件夾下
環境配置模塊(iotdb-env.bat, iotdb-env.sh),
系統配置模塊(iotdb-engine.properties)
日志配置模塊(logback.xml)。
開始
您可以通過以下步驟來測試安裝,如果執行后沒有返回錯誤,安裝就完成了。
啟動 IoTDB
可以通過運行 sbin 文件夾下的 start-server 腳本啟動 IoTDB。
# Unix/OS X
> sbin/start-server.sh -c -rpc_port
# Windows
> sbin\start-server.bat -c -rpc_port
"-c" and "-rpc_port" 都是可選的。
選項 "-c" 指定了配置文件所在的文件夾。
選項 "-rpc_port" 指定了啟動的 rpc port。
如果兩個選項同時指定,那么rpc_port將會覆蓋conf_path下面的配置。
使用 IoTDB
使用 Cli 命令行
IoTDB提供了與服務器交互的不同方式,這里我們將介紹使用 Cli 工具插入和查詢數據的基本步驟。
安裝 IoTDB 后,有一個默認的用戶root,它的默認密碼也是root。用戶可以使用這個
默認用戶登錄 Cli 并使用 IoTDB。Cli 的啟動腳本是 sbin 文件夾中的 start-cli 腳本。
在執行腳本時,用戶應該指定 IP,端口,USER_NAME 和 密碼。默認參數為-h 127.0.0.1 -p 6667 -u root -pw root。
下面是啟動 Cli 的命令:
# Unix/OS X
> sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root
# Windows
> sbin\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root
命令行客戶端是交互式的,所以如果一切就緒,您應該看到歡迎標志和聲明:
_____ _________ ______ ______
|_ _| | _ _ ||_ _ `.|_ _ \
| | .--.|_/ | | \_| | | `. \ | |_) |
| | / .'`\ \ | | | | | | | __'.
_| |_| \__. | _| |_ _| |_.' /_| |__) |
|_____|'.__.' |_____| |______.'|_______/ version x.x.x
IoTDB> login successfully
IoTDB>
基本的 IoTDB 命令
現在,讓我們介紹創建 timeseries、插入數據和查詢數據的方法。
IoTDB中的數據組織為 timeseries。每個 timeseries 包含多個數據-時間對,由一個存儲組擁有。
在定義 timeseries 之前,我們應該先使用SET storage group來定義一個存儲組,下面是一個例子:
IoTDB> SET STORAGE GROUP TO root.ln
我們也可以使用SHOW STORAGE GROUP來檢查正在創建的存儲組:
IoTDB> SHOW STORAGE GROUP
+-----------------------------------+
| Storage Group|
+-----------------------------------+
| root.ln|
+-----------------------------------+
storage group number = 1
在設置存儲組之后,我們可以使用CREATE TIMESERIES來創建一個新的TIMESERIES。
在創建 timeseries 時,我們應該定義它的數據類型和編碼方案。這里我們創建兩個 timeseries:
IoTDB> CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN
IoTDB> CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE
為了查詢特定的timeseries,我們可以使用 SHOW TIMESERIES . 表示被查詢的 timeseries 的路徑. 默認值是null, 表示查詢系統中所有的 timeseries (同SHOW TIMESERIES root).
以下是一些示例:
查詢系統中所有 timeseries:
IoTDB> SHOW TIMESERIES
+-------------------------------+---------------+--------+--------+
| Timeseries| Storage Group|DataType|Encoding|
+-------------------------------+---------------+--------+--------+
| root.ln.wf01.wt01.status| root.ln| BOOLEAN| PLAIN|
| root.ln.wf01.wt01.temperature| root.ln| FLOAT| RLE|
+-------------------------------+---------------+--------+--------+
Total timeseries number = 2
查詢指定的 timeseries(root.ln.wf01.wt01.status):
IoTDB> SHOW TIMESERIES root.ln.wf01.wt01.status
+------------------------------+--------------+--------+--------+
| Timeseries| Storage Group|DataType|Encoding|
+------------------------------+--------------+--------+--------+
| root.ln.wf01.wt01.status| root.ln| BOOLEAN| PLAIN|
+------------------------------+--------------+--------+--------+
Total timeseries number = 1
插入 timeseries 數據是IoTDB的一個基本操作,你可以使用INSERT 命令來完成這個操作。
在插入之前,您應該指定時間戳和后綴路徑名:
IoTDB> INSERT INTO root.ln.wf01.wt01(timestamp,status) values(100,true);
IoTDB> INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values(200,false,20.71)
你剛才插入的數據會顯示如下:
IoTDB> SELECT status FROM root.ln.wf01.wt01
+-----------------------+------------------------+
| Time|root.ln.wf01.wt01.status|
+-----------------------+------------------------+
|1970-01-01T08:00:00.100| true|
|1970-01-01T08:00:00.200| false|
+-----------------------+------------------------+
Total line number = 2
您還可以使用一條SQL語句查詢多個 timeseries 數據:
IoTDB> SELECT * FROM root.ln.wf01.wt01
+-----------------------+--------------------------+-----------------------------+
| Time| root.ln.wf01.wt01.status|root.ln.wf01.wt01.temperature|
+-----------------------+--------------------------+-----------------------------+
|1970-01-01T08:00:00.100| true| null|
|1970-01-01T08:00:00.200| false| 20.71|
+-----------------------+--------------------------+-----------------------------+
Total line number = 2
你可以使用如下命令退出:
IoTDB> quit
or
IoTDB> exit
有關IoTDB SQL支持的命令的更多信息,請參見Chapter 5: IoTDB SQL文檔。
停止 IoTDB
server 可以使用 "ctrl-C" 或者執行下面的腳本:
# Unix/OS X
> sbin/stop-server.sh
# Windows
> sbin\stop-server.bat
只編譯 server
在 incubator-iotdb 根目錄下執行:
> mvn clean package -pl server -am -DskipTests
編譯完成后, IoTDB server 將生成在: "server/target/iotdb-server-{project.version}".
只編譯 cli
在 incubator-iotdb 根目錄下執行:
> mvn clean package -pl cli -am -DskipTests
編譯完成后, IoTDB cli 將生成在 "cli/target/iotdb-cli-{project.version}".
使用 import-csv.sh
創建元數據
SET STORAGE GROUP TO root.fit.d1;
SET STORAGE GROUP TO root.fit.d2;
SET STORAGE GROUP TO root.fit.p;
CREATE TIMESERIES root.fit.d1.s1 WITH DATATYPE=INT32,ENCODING=RLE;
CREATE TIMESERIES root.fit.d1.s2 WITH DATATYPE=TEXT,ENCODING=PLAIN;
CREATE TIMESERIES root.fit.d2.s1 WITH DATATYPE=INT32,ENCODING=RLE;
CREATE TIMESERIES root.fit.d2.s3 WITH DATATYPE=INT32,ENCODING=RLE;
CREATE TIMESERIES root.fit.p.s1 WITH DATATYPE=INT32,ENCODING=RLE;
從 csv 文件導入數據的示例
Time,root.fit.d1.s1,root.fit.d1.s2,root.fit.d2.s1,root.fit.d2.s3,root.fit.p.s1
1,100,'hello',200,300,400
2,500,'world',600,700,800
3,900,'IoTDB',1000,1100,1200
運行 import shell
# Unix/OS X
> tools/import-csv.sh -h -p -u -pw -f
# Windows
> tools\import-csv.bat -h -p -u -pw -f
錯誤的數據文件
csvInsertError.error
使用 export-csv.sh
運行 export shell
# Unix/OS X
> tools/export-csv.sh -h -p -u -pw -td [-tf ]
# Windows
> tools\export-csv.bat -h -p -u -pw -td [-tf ]
執行查詢
select * from root.fit.d1
總結
以上是生活随笔為你收集整理的apache iotdb_Apache-IoTDB的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: python类的实例方法必须创建对象前还
- 下一篇: erlang 怎么获得socket中的属
