datamanager part-2

This commit is contained in:
liujianhuan 2020-04-19 20:51:58 +08:00
parent 7e9f6684a8
commit 05477a2a66
1 changed files with 41 additions and 1 deletions

View File

@ -91,12 +91,52 @@ foo_2015-01-03/2015-01-04_v1_2
* Dimensions: 由于Apache Druid支持schema更改因此即使是同一个数据源的一部分各个段之间的维度也可能不同。如果输入段具有不同的维度则输出段基本上包括输入段的所有维度。但是即使输入段具有相同的维度集维度顺序或维度的数据类型也可能不同。例如某些维度的数据类型可以从 `字符串` 类型更改为基本类型,或者可以更改维度的顺序以获得更好的局部性。在这种情况下,在数据类型和排序方面,最近段的维度先于旧段的维度。这是因为最近的段更有可能具有所需的新顺序和数据类型。如果要使用自己的顺序和类型,可以在压缩任务规范中指定自定义 `dimensionsSpec`
* Roll-up: 仅当为所有输入段设置了 `rollup` 时,才会汇总输出段。有关详细信息,请参见 [rollup](ingestion.md#rollup)。您可以使用 [段元数据查询](../Querying/segmentMetadata.md) 检查段是否已被rollup。
#### 压缩合并的IOConfig
压缩IOConfig需要指定 `inputSpec`,如下所示。
| 字段 | 描述 | 是否必须 |
|-|-|-|
| `type` | 任务类型,固定为 `compact` | 是 |
| `inputSpec` | 输入规范 | 是 |
目前有两种支持的 `inputSpec`:
时间间隔 `inputSpec`:
| 字段 | 描述 | 是否必须 |
|-|-|-|
| `type` | 任务类型,固定为 `interval` | 是 |
| `interval` | 需要合并压缩的时间间隔 | 是 |
`inputSpec`:
| 字段 | 描述 | 是否必须 |
|-|-|-|
| `type` | 任务类型,固定为 `segments` | 是 |
| `segments` | 段ID列表 | 是 |
### 增加新的数据
Druid可以通过将新的段追加到现有的段集来实现新数据插入到现有的数据源中。它还可以通过将现有段集与新数据合并并覆盖原始集来添加新数据。
Druid不支持按主键更新单个记录。
### 更新现有的数据
在数据源中摄取一段时间的数据并创建Apache Druid段之后您可能需要对摄取的数据进行更改。有几种方法可以做到这一点。
#### 使用lookups
如果有需要经常更新值的维度,请首先尝试使用 [lookups](../Querying/lookups.md)。lookups的一个典型用例是在Druid段中存储一个ID维度并希望将ID维度映射到一个人类可读的字符串值该字符串值可能需要定期更新。
#### 重新摄取数据
如果基于lookups的技术还不够您需要将想更新的时间块的数据重新索引到Druid中。这可以在覆盖模式默认模式下使用 [批处理摄取](ingestion.md#批量摄取) 方法之一来完成。它也可以使用 [流式摄取](ingestion.md#流式摄取) 来完成,前提是您先删除相关时间块的数据。
如果在批处理模式下进行重新摄取Druid的原子更新机制意味着查询将从旧数据无缝地转换到新数据。
我们建议保留一份原始数据的副本,以防您需要重新摄取它。
#### 使用基于Hadoop的摄取
#### 使用原生批摄取重新索引
### 删除数据