全部產品
Search
文件中心

E-MapReduce:資料格式描述檔案

更新時間:Mar 13, 2025

本文介紹索引資料的描述檔案(Ingestion Spec檔案)。

Ingestion Spec(資料格式描述)是Druid對要索引資料的格式以及如何索引該資料格式的一個統一描述,它是一個JSON檔案,一般由三部分組成。

{
    "dataSchema" : {...},
    "ioConfig" : {...},
    "tuningConfig" : {...}
}

格式

描述

是否必須

dataSchema

JSON對象

待消費資料的schema資訊。dataSchema是固定的,不隨資料消費方式改變。

ioConfig

JSON對象

待消費資料的來源和消費去向。資料消費方式不同,ioConfig也不相同。

tuningConfig

JSON對象

調節資料消費時的參數。資料消費方式不同,可以調節的參數也不相同。

DataSchema

第一部分的dataSchema描述了資料的格式,如何解析該資料,典型結構如下。

{
    "dataSource": <name_of_dataSource>,
    "parser": {
        "type": <>,
        "parseSpec": {
            "format": <>,
            "timestampSpec": {},
            "dimensionsSpec": {}
        }
    },
    "metricsSpec": {},
    "granularitySpec": {}
}

格式

描述

是否必須

dataSource

字串

資料來源的名稱。

parser

JSON對象

資料的解析方式。

metricsSpec

JSON對象數組

彙總器(aggregator)列表。

granularitySpec

JSON對象

資料彙總設定,如建立segments、彙總粒度等。

  • parser

    parser部分決定了您的資料如何被正確地解析,metricsSpec定義了資料如何被聚集計算,granularitySpec定義了資料分區的粒度、查詢的粒度。

    對於parser,type有兩個選項:string和hadoopString,後者用於Hadoop索引的 job。parseSpec是資料格式解析的具體定義。

    格式

    描述

    是否必須

    type

    字串

    資料格式,可以是 “json”、“jsonLowercase”、“csv”和“tsv”幾種格式。

    timestampSpec

    JSON對象

    時間戳記和時間戳記類型。

    dimensionsSpec

    JSON對象

    資料的維度(包含哪些列)。

    對於不同的資料格式,可能還有額外的parseSpec選項。

    timestampSpec表的描述如下。

    格式

    描述

    是否必須

    column

    字串

    時間戳記對應的列。

    format

    字串

    時間戳記類型,可選”iso”、 “millis”、 “posix”、“auto”和joda time支援的類型。

    dimensionsSpec表的描述如下。

    格式

    描述

    是否必須

    dimensions

    JSON數組

    資料包含的維度。每個維度可以只是個字串,或者可以額外指明維度屬性。例如 “dimensions”: [ “dimension1”, “dimension2”, “{“type”: “long”, “name”: “dimension3”} ],預設是STRING類型。

    dimensionExclusions

    JSON字串數組

    資料消費時要剔除的維度。

    spatialDimensions

    JSON對象數組

    空間維度。

  • metricsSpec

    metricsSpec是一個JSON對象數組,定義了一些彙總器(aggregators)。彙總器通常有如下的結構。

    {
        "type": <type>,
        "name": <output_name>,
        "fieldName": <metric_name>
    }

    官方提供了以下常用的彙總器。

    類型

    type 可選

    count

    count

    sum

    longSum、doubleSum、floatSum

    min/max

    longMin/longMax、doubleMin/doubleMax、floatMin/floatMax

    first/last

    longFirst/longLast、doubleFirst/doubleLast、floatFirst/floatLast

    javascript

    javascript

    cardinality

    cardinality

    hyperUnique

    hyperUnique

    說明

    後三個屬於進階彙總器,詳情請參見Apache Druid官方文檔

  • granularitySpec

    彙總支援兩種彙總方式:uniform和arbitrary,前者以一個固定的時間間隔彙總資料,後者盡量保證每個segments大小一致,時間間隔是不固定的。目前uniform是預設選項。

    格式

    描述

    是否必須

    segmentGranularity

    字串

    segments粒度。uniform 方式使用。預設為DAY。

    queryGranularity

    字串

    可供查詢的最小資料彙總粒度,預設值為true。

    rollup

    bool值

    是否彙總。

    intervals

    字串

    資料消費時間間隔。

    • batch:是

    • realtime:否

ioConfig

第二部分ioConfig描述了資料來源。以下是一個Hadoop索引的例子。

{
    "type": "hadoop",
    "inputSpec": {
        "type": "static",
        "paths": "hdfs://emr-header-1.cluster-6789:9000/druid/quickstart/wikiticker-2015-09-16-sampled.json"
    }
}
說明

對於通過Tranquility處理的流式資料,這部分是不需要的。

Tunning Config

Tuning Config是指一些額外的設定。

Tunning Config的內容依賴於您的資料來源。例如,Hadoop對批量資料建立索引,您可以指定MapReduce參數。