本ページでは、インデックスデータの記述ファイルである Ingestion Spec を簡単に紹介します。
Ingestion Spec は、インデックス付けされるデータのフォーマットと、それが Druid によってどのようにインデックス付けされるかについての統一された記述です。
これは、3 つの部分で構成される JSON ファイルです。
{
"dataSchema":{...}、
"ioConfig" : {...},
"tuningConfig" : {...}
}
キー | 形式 | 説明 | 必須事項 |
---|---|---|---|
dataSchema | JSON object | 使用するデータのスキーマ情報について説明します。dataSchema は固定されており、データが取り込まれる方法によって変化しません。 | はい |
ioConfig | JSON object | 取り込むデータの取り込み元と出力先を記述します。 データの利用方法が異なれば、ioConfig も異なります。 | はい |
tuningConfig | JSON object | 利用するデータのパラメーターを構成します。 データの利用方法が異なる場合、調整可能なパラメーターも異なります。 | いいえ |
dataSchema
dataSchema は、データの形式とデータの解析方法を記述します。 典型的な構造は以下の通りです。
{
"dataSoruce": <name_of_dataSource>,
"parser": {
"type": <>,
"parseSpec": {
"format": <>,
"timestampSpec": {},
"dimensionsSpec": {}
}
},
"metricsSpec": {},
"granularitySpec": {}
}
キー | 形式 | 説明 | 必須事項 |
---|---|---|---|
dataSource | String | データソースの名前です。 | はい |
parser | JSON object | データの解析方法です。 | はい |
metricsSpec | JSON object の配列 | アグリゲータのリストです。 | はい |
granularitySpec | JSON object | セグメントの作成や集計の粒度などのデータ集計設定です。 | はい |
- parser
パーサーは、データが正しく解析される方法を決定します。metricsSpec は、計算のためにデータをクラスター化する方法を定義します。granularitySpec は、データの断片化の細分性とクエリの細分性を定義します。
parser には、string と hadoopstring の 2 つのタイプがあります。 後者は、Hadoop インデックスジョブに使用されます。 ParseSpec は、データ形式解決の特定の定義です。キー 形式 説明 必須事項 type String データ形式は、json、jsonLowercase、csv、または tsv です。 はい timestampSpec JSON object タイムスタンプとタイムスタンプのタイプです。 はい dimensionsSpec JSON object データの次元です(列を含みます)。 はい 異なるデータ形式の場合、追加の parseSpec オプションが存在する場合があります。 次の表で、timestampSpec と dimensionSpec について説明します。キー 形式 説明 必須事項 column String タイムスタンプに対応する列です。 はい format String タイムスタンプのタイプは、ISO、millis、POSIX、auto、または joda time でサポートされているものを使用できます。 はい キー 形式 説明 必須事項 dimensions JSON array データに含まれるディメンションについて説明します。 各ディメンションは単なる文字列とすることができます。 ディメンションの属性を指定することもできます。 たとえば、ディメンションのタイプ : [dimenssion1、dimenssion2、{type:long、name:dimenssion3}] は、デフォルトでは文字列です。 はい dimensionExclusions JSON string の配列 データが使用されたときに削除されるディメンションです。 いいえ spatialDimensions JSON objectの配列 空間次元です。 いいえ - metricsSpec
MetricsSpec は JSON objectの配列です。 いくつかのアグリゲーターを定義します。 アグリゲーターは通常、次の構造を持っています。
```json { "type": <type>, "name": <output_name>, "fieldName": <metric_name> } ```
一般的に使用される次のアグリゲーターが提供されます。タイプ オプションのタイプ 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 注 表の最後の 3 つのタイプは、高度なアグリゲーターです。 それらの使用方法については、「Apache Druid official documents」をご参照ください。 - granularitySpec
均一モードと任意モードの 2 つの集約モードがサポートされています。 均一モードは、一定の時間間隔でデータを集約します。 任意モードは、各セグメントが同じサイズであることを確認しようとしますが、集約の時間間隔は固定されていません。 現在のデフォルトオプションは均一モードです。
キー 形式 説明 必須事項 segmentGranularity String セグメントの粒度の均一タイプです。デフォルトは DAY です。 いいえ queryGranularity String クエリの最小データ集計粒度です。 デフォルト値は true です。 いいえ rollup Bool 値 集計するかどうかです。 いいえ intervals String データ消費の時間間隔です。 バッチの場合は必須、リアルタイムの場合は任意です。
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 を介して処理されるストリーミングデータには必要ありません。
TuningConfig
TuningConfig は追加の設定を参照します。 たとえば、MapReduce パラメータを指定し、Hadoop を使用してバッチデータのインデックスを作成できます。 tuningConfig の内容は、データソースによって異なる場合があります。