真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ApacheArrow官方文檔-元數(shù)據(jù)

元數(shù)據(jù):邏輯類型,模式,數(shù)據(jù)頭

這是Arrow元數(shù)據(jù)規(guī)范的文檔,它使系統(tǒng)能夠通信

創(chuàng)新互聯(lián)為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、app軟件開發(fā)、小程序設(shè)計(jì)、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營(yíng)銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。 

  • 邏輯數(shù)組類型(使用Layout.md中指定的物理內(nèi)存布局實(shí)現(xiàn))
  • Arrow數(shù)據(jù)結(jié)構(gòu)的表格集合的模式
  • “數(shù)據(jù)頭”指明內(nèi)存緩沖區(qū)的物理位置,內(nèi)存緩沖區(qū)不復(fù)制內(nèi)存而足以重建Arrow數(shù)據(jù)結(jié)構(gòu)。

    規(guī)范實(shí)現(xiàn)

    我們正在使用Flatbuffers進(jìn)行低開銷讀寫Arrow元數(shù)據(jù)。請(qǐng)參閱Message.fbs。

    架構(gòu)

    ??Schema類型描述了由任意數(shù)量的Arrow數(shù)組組成的表狀結(jié)構(gòu),每個(gè)Arrow數(shù)組可以被解釋為表中的一列。模式本身不描述任何特定數(shù)據(jù)集的物理結(jié)構(gòu)。
    模式由一系列字段組成,這些字段是描述列的元數(shù)據(jù)。Flatbuffers IDL的一個(gè)字段是:

    table Field {
    // Name is not required, in i.e. a List
    name: string;
    nullable: bool;
    type: Type;
    // present only if the field is dictionary encoded
    // will point to a dictionary provided by a DictionaryBatch message
    dictionary: long;
    // children apply only to Nested data types like Struct, List and Union
    children: [Field];
    /// layout of buffers produced for this type (as derived from the Type)
    /// does not include children
    /// each recordbatch will return instances of those Buffers.
    layout: [ VectorLayout ];
    // User-defined metadata
    custom_metadata: [ KeyValue ];
    }

    type是字段的邏輯類型。嵌套類型(如List,Struct和Union)具有一系列子字段。
    還提供了該模式的JSON表示形式:字段:

    {
    "name" : "name_of_the_field",
    "nullable" : false,
    "type" : /* Type */,
    "children" : [ /* Field */ ],
    "typeLayout" : {
    "vectors" : [ /* VectorLayout */ ]
    }
    }

    VectorLayout:

{
  "type" : "DATA|OFFSET|VALIDITY|TYPE",
  "typeBitWidth" : /* int */
}

Type:
{
  "name" :"null|struct|list|union|int|floatingpoint|utf8|binary|fixedsizebinary|bool|decimal|date|time|timestamp|interval"
  // fields as defined in the Flatbuffer depending on the type name
}

Union:
{
  "name" : "union",
  "mode" : "Sparse|Dense",
  "typeIds" : [ /* integer */ ]
}

在Union中的typeIds字段是用于表示每種類型的編碼,其可以與從子數(shù)組的索引不同。這樣就可以使用聯(lián)合類型ids不需要從0開始枚舉。
Int:

{
  "name" : "int",
  "bitWidth" : /* integer */,
  "isSigned" : /* boolean */
}

FloatingPoint:

{
  "name" : "floatingpoint",
  "precision" : "HALF|SINGLE|DOUBLE"
}

Decimal:

{
  "name" : "decimal",
  "precision" : /* integer */,
  "scale" : /* integer */
}

Timestamp:

{
  "name" : "timestamp",
  "unit" : "SECOND|MILLISECOND|MICROSECOND|NANOSECOND"
}

Date:

{
  "name" : "date",
  "unit" : "DAY|MILLISECOND"
}

Time:

{
  "name" : "time",
  "unit" : "SECOND|MILLISECOND|MICROSECOND|NANOSECOND",
  "bitWidth": /* integer: 32 or 64 */
}

Interval:

{
  "name" : "interval",
  "unit" : "YEAR_MONTH|DAY_TIME"
}

Schema:
{
  "fields" : [
    /* Field */
  ]
}

記錄數(shù)據(jù)頭

??RecordBatch是頂級(jí)命名的等長(zhǎng)Arrow數(shù)組(或向量)的集合。如果其中一個(gè)數(shù)組包含嵌套數(shù)據(jù),則其子數(shù)組不需要與頂級(jí)數(shù)組的長(zhǎng)度相同。
?可以被認(rèn)為是特定模式的實(shí)現(xiàn)。描述特定RecordBatch的元數(shù)據(jù)稱為“數(shù)據(jù)頭”。這是用于RecordBatch數(shù)據(jù)頭的Flatbuffers的IDL

table RecordBatch {
  length: long;
  nodes: [FieldNode];
  buffers: [Buffer];
}

??所述RecordBatch元數(shù)據(jù)提供與長(zhǎng)度超過2^31- 1的記錄批次,但Arrow實(shí)現(xiàn)不要求實(shí)現(xiàn)支持超出這一大小。
?通過對(duì)給定的內(nèi)存中數(shù)據(jù)集的模式(可能包含嵌套類型)進(jìn)行深度優(yōu)先遍歷/扁平化,生成nodes和buffers字段。

緩沖區(qū)

??緩沖區(qū)是描述相對(duì)于某些虛擬地址空間的連續(xù)內(nèi)存區(qū)域的元數(shù)據(jù)。這可能包括:

  • 共享內(nèi)存,例如內(nèi)存映射文件
  • 在內(nèi)存中接收到RPC消息
  • 文件中的數(shù)據(jù)
    緩沖區(qū)類型的鍵形式是:

    struct Buffer {
    offset: long;
    length: long;
    }

    ??在record batch的上下文中,每個(gè)字段具有與其相關(guān)聯(lián)的一些數(shù)量的緩沖區(qū),它們?cè)从谄湮锢韮?nèi)存布局。
    ?每個(gè)邏輯類型(與其子節(jié)點(diǎn)分開,如果它是一個(gè)嵌套類型)具有與之相關(guān)聯(lián)的確定性數(shù)量的緩沖區(qū)。這些將在邏輯類型部分中指定。

    字段元數(shù)據(jù)

    ??所述FieldNode值包含關(guān)于在嵌套類型層次每個(gè)等級(jí)的元數(shù)據(jù)。

    struct FieldNode {
    /// The number of value slots in the Arrow array at this level of a nested
    /// tree
    length: long;
    
    /// The number of observed nulls.
    null_count: lohng;
    }

    ??所述FieldNode元數(shù)據(jù)提供長(zhǎng)度超過2^31- 1的字段,但是Arrow不要求實(shí)現(xiàn)支持大型數(shù)組。

平鋪嵌套數(shù)據(jù)

??嵌套類型以深度優(yōu)先順序在record batch中扁平化。當(dāng)訪問嵌套類型樹中的每個(gè)字段時(shí),元數(shù)據(jù)將附加到頂級(jí)fields數(shù)組,并將與該字段相關(guān)聯(lián)的緩沖區(qū)(但不是其子級(jí))附加到buffers數(shù)組。
?例如,讓我們考慮模式:

col1: Struct, c: Float64>
col2: Utf8

其扁平化版本是:

FieldNode 0: Struct name='col1'
FieldNode 1: Int32 name=a'
FieldNode 2: List name='b'
FieldNode 3: Int64 name='item'  # arbitrary
FieldNode 4: Float64 name='c'
FieldNode 5: Utf8 name='col2'

??對(duì)于生成的緩沖區(qū),將具有以下內(nèi)容(如下面對(duì)于每種類型的更詳細(xì)描述):

buffer 0: field 0 validity bitmap

buffer 1: field 1 validity bitmap
buffer 2: field 1 values 

buffer 3: field 2 validity bitmap
buffer 4: field 2 list offsets 

buffer 5: field 3 validity bitmap
buffer 6: field 3 values 

buffer 7: field 4 validity bitmap
buffer 8: field 4 values 

buffer 9: field 5 validity bitmap
buffer 10: field 5 offsets 
buffer 11: field 5 data 

邏輯類型

??邏輯類型由類型名稱和元數(shù)據(jù)以及對(duì)物理內(nèi)存表示的顯式映射組成。這些可能分為不同的類別:

  • 表示為固定寬度基本類型數(shù)組(例如:C風(fēng)格的整數(shù)和浮點(diǎn)數(shù))
  • 具有與物理嵌套類型相等的內(nèi)存布局的類型(例如,字符串使用列表(List)表示,但邏輯上不是嵌套類型)

    整型

    ??在Arrow的第一個(gè)版本中,我們提供標(biāo)準(zhǔn)的8位到64位大小的標(biāo)準(zhǔn)C整數(shù)類型,包括有符號(hào)和無符號(hào):
    ● 有符號(hào)類型:Int8,Int16,Int32,Int64
    ● 無符號(hào)類型:UInt8,UInt16,UInt32,UInt64
    ?IDL看起來像:

    table Int {
    bitWidth: int;
    is_signed: bool;
    }

??整數(shù)字節(jié)順序當(dāng)前在模式級(jí)別全局設(shè)置。如果一個(gè)模式設(shè)置為little-endian(低位編址),那么出現(xiàn)在其中的所有整數(shù)類型都必須是little-endian。整數(shù)作為其他數(shù)據(jù)表示的一部分(如列表偏移量和聯(lián)合類型)必須與整個(gè)Record Batch具有相同的字節(jié)順序。

浮點(diǎn)數(shù)字

??我們提供3種類型的浮點(diǎn)數(shù)作為固定位寬的基本數(shù)組

  • 半精度,16位寬
  • 單精度,32位寬
  • 雙精度,64位寬
    IDL與下述類似:
enum Precision:int {HALF, SINGLE, DOUBLE}

table FloatingPoint {
  precision: Precision;
}

Boolean

??布爾邏輯類型表示為1位寬的基本(原語)物理類型。這些位使用最低有效位(LSB)排序進(jìn)行編號(hào)。
?像其他固定的位寬基本類型一樣,布爾數(shù)據(jù)在數(shù)據(jù)頭中顯示為2個(gè)緩沖區(qū)(一個(gè)位圖為有效向量,另一個(gè)為值)。

List

??List邏輯類型是(和相同名稱)列表物理類型的邏輯對(duì)應(yīng)。
?在數(shù)據(jù)頭格式中,List字段節(jié)點(diǎn)包含2個(gè)緩沖區(qū):

  • 有效位圖
  • 列表偏移量
    ?與List的子字段相關(guān)聯(lián)的緩沖區(qū)根據(jù)子邏輯類型(例如,List對(duì)List)遞歸地處理。

    Utf8和Binary

    ??我們?yōu)榭勺冮L(zhǎng)度字節(jié)指定兩種邏輯類型:

  • Utf8 數(shù)據(jù)是具有UTF-8編碼的unicode值
  • Binary 是任何其他可變長(zhǎng)度字節(jié)
    ?這些類型都與嵌套類型List具有相同的內(nèi)存布局,其約束是內(nèi)部字節(jié)不能包含空值。從邏輯類型的角度來看,它們是原始的,而不是嵌套類型。
    ?在數(shù)據(jù)頭格式中,雖然List會(huì)顯示為2個(gè)字段節(jié)點(diǎn)(List 和UInt8)和4個(gè)緩沖區(qū)(每個(gè)節(jié)點(diǎn)為2個(gè),如上所述),這些類型也有簡(jiǎn)單的表示單字段節(jié)點(diǎn)(Utf8或Binary 邏輯類型,沒有子節(jié)點(diǎn))和3個(gè)緩沖區(qū):
  • 有效位圖
  • 列表偏移量
  • 字節(jié)數(shù)據(jù)
  • Decimal

    ??TBD

Timestamp

??所有時(shí)間戳都以64位整數(shù)存儲(chǔ),有四個(gè)單位:秒,毫秒,微秒和納秒。

Date

??支持兩種不同的日期類型:

  • 自UNIX epoch以來的天數(shù)為32位整數(shù)
  • 從UNIX epoch開始的毫秒數(shù)為64位整數(shù)

Time

??時(shí)間支持相同的單位:秒,毫秒,微秒和納秒。我們將時(shí)間表示為容納指定單位的最小整數(shù)。對(duì)于秒和毫秒:32位,其他64位。

字典編碼


文章題目:ApacheArrow官方文檔-元數(shù)據(jù)
分享URL:http://weahome.cn/article/gegdod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部