6.6.1. ES 数据导入 TiDB

主要实现将 ES 的数据以数据流的方式抽取到内存,经过一系类处理之后,以流的方式保存到 TiDB ,主要使用到的 Kettle 的组件为:tableinput、Elasticsearch Query(扩展插件)。

下面将在 ES 的表 每天定时导入 TiDB 的数据库中的表 。

如下图 1 所示,通过 ES 查询组件设置需要查询的 SQL。从 ES 数据库获取数据是采用分批的方式获取的。可以通过界面设置每次获取数据的条数大小。其中 SQL 查询可以通过采用 Kettle 变量的形式进行参数的动态传递 如下图 2 所示。


图1

Alt
图2

将数据写入 TiDB,主要采用 Kettle 内置的 插件相关的设置如下。

2.1 数据源设置

Kettle 里面设置 TiDB 的数据源直接采用 Kettle 内置的 MySQL 数据驱动即可。如下图 3 所示

2.2 TiDB 数据保存设置

TiDB 的数据保存设置界面如图 4 所示,设置对应的数据库、数据库表以及每次提交的数据量。相关参数注意事项如下:

  • 提交的数据量

    1. 设置条数的同时,可以通过设置此插件运行时复制的个数进行性能提升,充分利用TiDB的高并发特性

  • 忽略插入错误

    1. 对于插入过程中出现的错误,可以选择插入过程中忽略或者默认停止

    2. 如果插入过程中针对重复数据进行更新,可以采用 Kettle 的插入/更新步骤,由于此插件没有实现 TiDB 支持的 on duplicate 语法,如果需要性能较高,可以通过开发插件的方式,进一步提升插入的性能

3. 数据处理流程设置

通过 Kettle 的转换流程,将上述步骤设置的 ES 的数据抽取、TiDB 的数据导入以流程的方式进行数据流的处理,当然中间可以进行复杂的清洗和转换设置,这里不做重点描述。数据流设置界面图 5 所示,其中 60 代表数据流程执行时,同时运行 60 个插入的实例,向 TiDB 进行高速的写入数据。


图5

通过 Kettle 的定时器,可以设置流程的执行时间。如图 6 所示。

Alt
图6

以上完整的定义了通过 Kettle 工具,按需定时的将数据从 ES 以流的方式导入到 TiDB 。

Hbase 的数据导入 TiDB ,主要使用的步骤为 Kettle 内置的 HbaseInput、TableOutPut。其中数据导入到 TiDB 的 TableOutPut 同 ES 导入 TiDB 类似,不在赘述。

数据源设置是直接采用 Kettle 的 HBase input 组件,如图 7,选择 Hbase 集群链接、获取对应的表名和 mapping 列表。
图7 Alt
图8


图9