您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Apache IoTDB的TsFile怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Apache IoTDB的TsFile怎么使用”吧!
在大數(shù)據(jù)生態(tài)中有很多文件格式,像 Parquet,ORC,Avro 等等,都是針對嵌套數(shù)據(jù)設計的文件格式。這些文件格式普遍具有預先定義的schema,數(shù)據(jù)以行式寫入,按屬性組織,列式存儲。但是這些文件格式一般不能很好地滿足時間序列數(shù)據(jù)的管理需求。比如,在一些時間序列數(shù)據(jù)的場景中,一般各個序列是獨立寫入的,時間戳并不對齊;查詢結(jié)果也需要按照時間戳排序。TsFile(Time series File)就是我們?yōu)闀r序數(shù)據(jù)場景設計的文件格式。今天主要介紹用法,主要針對 0.10 版本。
文件格式由于比較輕量級,適合在邊緣端當做一個數(shù)據(jù)壓縮包使用,這個邊緣端可以是設備內(nèi)部,也可以是工控機、工廠層級。設備上生成的數(shù)據(jù)可以隨時持久化到文件中進行存儲。這里說的設備可能一臺風機,上邊會有多個測點,比如風速傳感器、溫度傳感器等。每個傳感器采集的數(shù)據(jù)就是一個時間序列。聯(lián)想的IoT平臺自2017年就開始使用TsFile存儲時序數(shù)據(jù)。
因此,TsFile 的目標場景是管理一個或多個設備的時序數(shù)據(jù)。
設備-測點模型
設備(DeviceId):類似表的概念。
測點(MeasurementId):一個設備可以有多個測點,類似表中的列的概念。
時間序列路徑(Path):可以通過設備和測點定義 Path(設備Id,測點Id)。
測點描述信息(MeasurementSchema):每個時間序列都對應一個描述信息,包括數(shù)據(jù)類型、編碼方式、壓縮方式。
每個時間序列都有兩列:時間列、值列。
最近喜歡畫圖,來畫一張,基本就是這樣的,不同設備可以有不同的測點。
使用 TsFile,第一步就是注冊元數(shù)據(jù)。
注冊時間序列:Path+MeasurementSchema
可以通過這種方式把每個時間序列都注冊進去。
注冊時間序列需要提供一個 Path 和一個 MeasurementSchema
String path = "test.tsfile";
在 0.10 以前,所有設備都共享一個點表,同名 Measurement 的 schema 也需要一樣(這就是IoTDB里一個存儲組下同名測點類型需要一樣的限制的來源)。在 0.10 以后,每個時間序列做到了真正的獨立,互不干擾。
按模板注冊設備:設備模板+設備
上面這樣一條一條注冊比較麻煩,因此提供了一個設備模板的功能。每個模板定義了一組 MeasurementSchema,比如有10個測點,當一個設備關(guān)聯(lián)到了這個模板上,就自動注冊出了 10 個序列。
首先生成設備模板,然后注冊模板。
Map<String, MeasurementSchema> template = new HashMap<>();
接下來注冊設備,按模板名關(guān)聯(lián)到模板上:
tsFileWriter.registerDevice("device_1", "template_1");
這樣,我就注冊了 2 個設備,每個設備都有 2 個測點。
注冊一個模板,實時寫入數(shù)據(jù)
這個是高級簡化版。當我們只注冊了一個設備模板時,可以不注冊設備,直接寫入數(shù)據(jù)。寫入流程中如果發(fā)現(xiàn)這個設備寫入的數(shù)據(jù)沒有注冊,會直接到模板里找同名的 MeasurementSchema 進行注冊。這也是繼承了 0.9 以前版本的優(yōu)良傳統(tǒng)(0.9以前的版本,TsFile 只能注冊一個模板,然后就可以寫數(shù)據(jù)了)。
TsFile 的數(shù)據(jù)寫入有一個限制,每列都需要按照時間遞增寫入,否則不保證正確性。
按設備寫入一行數(shù)據(jù):TSRecord
一個 TSRecord 是一個設備,一個時間戳,多個測點的值。類似一個表的一行數(shù)據(jù)。
按設備寫入一批數(shù)據(jù):Tablet
哈哈,又看到了 Tablet,對,這個結(jié)構(gòu)是貫穿 TsFile 和 IoTDB Session 的一個結(jié)構(gòu)。表示一個設備,多個時間戳的多個測點的值,類似一個子表。這個子表不能有空值。
同樣,這種寫入接口速度快,可以達到每秒千萬點寫入速度。
查詢的接口接收一批路徑,一個表達式(可以進行時間過濾和值過濾),其實就對應了 select 和 where 兩個子句。
在查詢時候,TsFile 的默認表結(jié)構(gòu)是寬表,time, d1.m1, d1.m2, d2.m1, d2.m2。這個結(jié)構(gòu)默認是把給定的查詢 Path 按 Time 做對齊,并且進行條件過濾的。
到此,相信大家對“Apache IoTDB的TsFile怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。