亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Apache Arrow官方文檔-IPC進程間通信

發布時間:2020-06-18 14:25:52 來源:網絡 閱讀:1701 作者:Lynn_Yuan 欄目:大數據

封裝消息格式

  流和文件格式中的數據組件表示為封裝 消息,包括:

  • 指示元數據大小的長度前綴
  • 消息元數據作為Flatbuffer 平鋪緩沖區
  • 將字節填充到8字節邊界
  • 消息體
    示意,我們有:
    <metadata_size: int32>
    <metadata_flatbuffer: bytes>
    <padding>
    <message body>

 所述metadata_size包括flatbuffer加填充的大小。所述 Message flatbuffer包括版本號,特定消息(作為flatbuffer聯合),和消息體的大小:

table Message {
  version: org.apache.arrow.flatbuf.MetadataVersion;
  header: MessageHeader;
  bodyLength: long;
}

  目前,我們支持4種類型的消息:

  • Schema
  • RecordBatch
  • DictionaryBatch
  • Tensor

流式格式

  我們提供用于RecordBatch的流格式。它被作為封裝消息的序列呈現,每個消息遵循上述格式。該模式首先在流中,對于以后的所有RecordBatch都是相同的。如果模式中的任何字段都是字典編碼的,則一個或多個 DictionaryBatch消息將跟隨模式。

<SCHEMA>
<DICTIONARY 0>
...
<DICTIONARY k - 1>
<RECORD BATCH 0>
...
<RECORD BATCH n - 1>
<EOS [optional]: int32>

  當流讀取器實現讀取流時,在每個消息之后,它可以讀取接下來的4個字節以知道以下消息元數據的大小。讀取消息flatbuffer后,您可以讀取消息體。
  流寫入器可以通過寫入0長度作為int32或簡單地關閉流接口來發送流終端(EOS)信號。

文件格式

  我們以與流格式非常相似的格式定義支持隨機訪問的“文件格式”。該文件以魔術字符串ARROW1 (加上填充)開始和結束。文件中的內容與流格式相同。在文件末尾,我們編寫一個頁腳,包括文件中每個數據塊的偏移量和大小,以便隨機訪問是可以實現的。有關文件頁腳的精確細節,請參閱 format / File.fbs。
示意, 我們有:

<magic number "ARROW1">
<empty padding bytes [to 8 byte boundary]>
<STREAMING FORMAT>
<FOOTER>
<FOOTER SIZE: int32>
<magic number "ARROW1">

RecordBatch體結構

所述RecordBatch元數據包含一個深度優先(先序)扁平化設置字段的元數據和物理內存緩沖區(Message.fbs 中的一些注釋已經縮短/移除):

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偏移量用作消息正文開頭的參考幀。因此,在通用IPC設置中,這些偏移量可能是一個或多個共享內存區域中的任何位置,在文件格式中偏移量從0開始。
  RecordBatch的位置以及元數據塊的大小以及緩沖區的大小存儲在文件頁腳中:

struct Block {
  offset: long;
  metaDataLength: int;
  bodyLength: long;
}

  一些關于這個的注釋

  • 該Block偏移量表示記錄批次的起始字節。
  • 元數據長度包括平緩緩沖區大小,記錄批量元數據平緩緩沖區以及任何填充字節

    字典Batches

      字典Batch尚未實現,但它們在元數據中提供。目前,文件中顯示的DICTIONARY細分片段不會出現在任何文件實現中。

    Tensor(多維數組)信息格式

      Tensor消息類型提供一種方式來編寫使用Arrow的共享內存工具的固定大小的值(如一個NumPy的ndarray)的多維數組。盡管我們在C ++中提供了一個參考實現,但通常不需要實現這種數據格式的Arrow實現。
      當編寫獨立封裝的Tensor消息時,我們使用上述格式,但另外將起始偏移(如果寫入共享內存區域)對齊為8的倍數:

    <PADDING>
    <metadata size: int32>
    <metadata>
    <tensor body> 
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

普定县| 化隆| 启东市| 天气| 信宜市| 盐池县| 陕西省| 阳东县| 神木县| 葫芦岛市| 武城县| 青川县| 襄樊市| 睢宁县| 宜都市| 通辽市| 蒙自县| 太仓市| 沈丘县| 皮山县| 杭锦旗| 洞口县| 弥渡县| 康乐县| 新民市| 兴城市| 宁都县| 中牟县| 资源县| 龙川县| 崇义县| 竹山县| 太康县| 昌黎县| 巴林左旗| 临漳县| 富平县| 汶川县| 玉环县| 晋城| 邵阳县|