流和文件格式中的數(shù)據(jù)組件表示為封裝 消息,包括:
創(chuàng)新互聯(lián)專(zhuān)注于賀州企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城建設(shè)。賀州網(wǎng)站建設(shè)公司,為賀州等地區(qū)提供建站服務(wù)。全流程定制設(shè)計(jì),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
<metadata_size: int32>
<metadata_flatbuffer: bytes>
<padding>
<message body>
所述metadata_size包括flatbuffer加填充的大小。所述 Message flatbuffer包括版本號(hào),特定消息(作為flatbuffer聯(lián)合),和消息體的大小:
table Message {
version: org.apache.arrow.flatbuf.MetadataVersion;
header: MessageHeader;
bodyLength: long;
}
目前,我們支持4種類(lèi)型的消息:
我們提供用于RecordBatch的流格式。它被作為封裝消息的序列呈現(xiàn),每個(gè)消息遵循上述格式。該模式首先在流中,對(duì)于以后的所有RecordBatch都是相同的。如果模式中的任何字段都是字典編碼的,則一個(gè)或多個(gè) DictionaryBatch消息將跟隨模式。
<SCHEMA>
<DICTIONARY 0>
...
<DICTIONARY k - 1>
<RECORD BATCH 0>
...
<RECORD BATCH n - 1>
<EOS [optional]: int32>
當(dāng)流讀取器實(shí)現(xiàn)讀取流時(shí),在每個(gè)消息之后,它可以讀取接下來(lái)的4個(gè)字節(jié)以知道以下消息元數(shù)據(jù)的大小。讀取消息flatbuffer后,您可以讀取消息體。
流寫(xiě)入器可以通過(guò)寫(xiě)入0長(zhǎng)度作為int32或簡(jiǎn)單地關(guān)閉流接口來(lái)發(fā)送流終端(EOS)信號(hào)。
我們以與流格式非常相似的格式定義支持隨機(jī)訪(fǎng)問(wèn)的“文件格式”。該文件以魔術(shù)字符串ARROW1 (加上填充)開(kāi)始和結(jié)束。文件中的內(nèi)容與流格式相同。在文件末尾,我們編寫(xiě)一個(gè)頁(yè)腳,包括文件中每個(gè)數(shù)據(jù)塊的偏移量和大小,以便隨機(jī)訪(fǎng)問(wèn)是可以實(shí)現(xiàn)的。有關(guān)文件頁(yè)腳的精確細(xì)節(jié),請(qǐng)參閱 format / File.fbs。
示意, 我們有:
<magic number "ARROW1">
<empty padding bytes [to 8 byte boundary]>
<STREAMING FORMAT>
<FOOTER>
<FOOTER SIZE: int32>
<magic number "ARROW1">
所述RecordBatch元數(shù)據(jù)包含一個(gè)深度優(yōu)先(先序)扁平化設(shè)置字段的元數(shù)據(jù)和物理內(nèi)存緩沖區(qū)(Message.fbs 中的一些注釋已經(jīng)縮短/移除):
table RecordBatch {
length: long;
nodes: [FieldNode];
buffers: [Buffer];
}
struct FieldNode {
length: long;
null_count: long;
}
struct Buffer {
/// The shared memory page id where this buffer is located. Currently this is
/// not used
page: int;
/// The relative offset into the shared memory page where the bytes for this
/// buffer starts
offset: long;
/// The absolute length (in bytes) of the memory buffer. The memory is found
/// from offset (inclusive) to offset + length (non-inclusive).
length: long;
}
在文件的上下文中,不使用page,Buffer偏移量用作消息正文開(kāi)頭的參考幀。因此,在通用IPC設(shè)置中,這些偏移量可能是一個(gè)或多個(gè)共享內(nèi)存區(qū)域中的任何位置,在文件格式中偏移量從0開(kāi)始。
RecordBatch的位置以及元數(shù)據(jù)塊的大小以及緩沖區(qū)的大小存儲(chǔ)在文件頁(yè)腳中:
struct Block {
offset: long;
metaDataLength: int;
bodyLength: long;
}
一些關(guān)于這個(gè)的注釋
字典Batch尚未實(shí)現(xiàn),但它們?cè)谠獢?shù)據(jù)中提供。目前,文件中顯示的DICTIONARY細(xì)分片段不會(huì)出現(xiàn)在任何文件實(shí)現(xiàn)中。
Tensor消息類(lèi)型提供一種方式來(lái)編寫(xiě)使用Arrow的共享內(nèi)存工具的固定大小的值(如一個(gè)NumPy的ndarray)的多維數(shù)組。盡管我們?cè)贑 ++中提供了一個(gè)參考實(shí)現(xiàn),但通常不需要實(shí)現(xiàn)這種數(shù)據(jù)格式的Arrow實(shí)現(xiàn)。
當(dāng)編寫(xiě)?yīng)毩⒎庋b的Tensor消息時(shí),我們使用上述格式,但另外將起始偏移(如果寫(xiě)入共享內(nèi)存區(qū)域)對(duì)齊為8的倍數(shù):
<PADDING>
<metadata size: int32>
<metadata>
<tensor body>
網(wǎng)站題目:ApacheArrow官方文檔-IPC進(jìn)程間通信
標(biāo)題網(wǎng)址:http://www.chinadenli.net/article0/gciioo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、網(wǎng)站維護(hù)、小程序開(kāi)發(fā)、網(wǎng)站營(yíng)銷(xiāo)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)