全部产品
阿里云办公

全量导出(脚本模式)

更新时间:2017-11-21 10:51:07

数据集成(Data Integration)产品提供数据同步服务,有脚本模式向导模式两种方式。脚本模式更灵活,向导模式更简单。

本章介绍如何将Table Store中的全量数据通过数据集成的脚本模式导出到OpenSearch中。

途径

  • 数据集成脚本模式
    • Reader:OTSReader
    • Writer:OpenSearchWriter

步骤1. 创建Table Store数据源

说明:如果已经创建了Table Store的数据源,可以跳过这一步。

创建数据源的具体步骤,请参见创建Table Store数据源

步骤2. 创建导出任务

  1. 登录数据集成控制台

  2. 同步任务页面,选择脚本模式

    脚本模式

  3. 在弹出的导入模板对话框中,来源类型选择OTS目标类型选择OpenSearch

  4. 单击确认,进入配置页面。

步骤3. 完善配置项

  1. 在配置界面,已经提前嵌入了otsreader和opensearchwriter的模板,请参考以下解释完成配置。

    1. {
    2. "type": "job", # 不能修改
    3. "version": "1.0", # 不能修改
    4. "configuration": {
    5. "setting": {
    6. "errorLimit": {
    7. "record": "0" # 超过record个错误后,导入任务会失败。
    8. },
    9. "speed": {
    10. "mbps": "1", # 导入速率,单位是MB
    11. "concurrent": "1" # 并发度。
    12. }
    13. },
    14. "reader": {
    15. "plugin": "ots", # 不能修改
    16. "parameter": {
    17. "datasource": "", # 数据集成中的数据源名称,需要提前设置好,这里有两种选择,一种是配置datasource数据源,一种写明文的AccessKeyID等鉴权信息,鼓励使用数据源。
    18. "table": "", # Table Store中的表名
    19. "column": [ # 需要导出到OpenSearch中的列名
    20. {
    21. "name": "column1" # Table Store中列名,此列需要导入到OpenSearch
    22. },
    23. {
    24. "name": "column2" # Table Store中列名,此列需要导入到OpenSearch
    25. },
    26. {
    27. "name": "column3" # Table Store中列名,此列需要导入到OpenSearch
    28. }
    29. ],
    30. "range": {
    31. "begin": [
    32. {
    33. "type": "INF_MIN" # Table Store中第一列主键的起始位置。如果要导出全量,这里需要配置为INF_MIN,如何导出部分,则按需要配置。如果有几列主键列,这里begin中就需要几项配置,但是当导出目标为OpenSearch的时候仅支持单列主键,所以这里仅演示单列的配置
    34. }
    35. ],
    36. "end": [
    37. {
    38. "type": "INF_MAX" # Table Store中第一列主键的结束位置。如果要导出全量,这里需要配置为INF_MAX,如何导出部分,则按需要配置。
    39. }
    40. ],
    41. "split": [ # 用来配置Table Store的表的分区信息,可以加速导出,下一个版本会自动处理。
    42. ]
    43. }
    44. }
    45. },
    46. "writer": {
    47. "plugin": "opensearch", # 不能修改
    48. "parameter": {
    49. "endpoint": "", # OpenSearch中的实例的endpoint
    50. "accessId": "", # 阿里云的AccessKeyID
    51. "accessKey": "", # 阿里云的AccessKeySecret
    52. "host": "", # 配置同OpenSearchendpoint,类似于https://opensearch-cn-hangzhou.aliyuncs.com
    53. "indexName": "", # OpenSearch中的实例名
    54. "table": "", # OpenSearch中配置的表名
    55. "column": [ # OpenSearch中配置的列名
    56. "col1", # 按顺序对应otsreader中的列名,这里的col1对应于Table Store中的column1
    57. "col2" # 按顺序对应otsreader中的列名,这里的col2对应于Table Store中的column2
    58. ],
    59. "batchSize": "500", # 一次写入的个数
    60. "writeMode": "add", # 写入模式,支持addupdate,全量导出的时候建议用add
    61. "skipDirtyRecord": "true", # 是否跳过脏数据,比如格式不对的记录。
    62. "ignoreWriteError": "false" # 如果出错的时候,是否忽略
    63. }
    64. }
    65. }
    66. }
  2. 单击保存,保存任务。

步骤4. 运行任务

  1. 单击运行,开始执行任务。

    运行

  2. 查看页面下方的日志。

    如果日志中没有报错,则说明执行成功,您可以到目标OpenSearch中去检查数据了。

    说明:因为全量导出一般是一次性的,所以不需要配置自动调度参数。如果需要配置调度参数,请参考增量同步中的调度参数配置。

步骤5. 检查导出到OpenSearch中的数据

  1. 登录OpenSearch控制台

  2. 选择导出数据的应用名称,单击管理进入管理页面。

  3. 基本信息页面,查看文档总数,判断是否和自己导入的数据量一致。

    OpenSearch中的文档数如果超过100万,则结果为预估值。只要OpenSearch中有结果,且数据集成导出任务没有报错,则导出任务成功执行完成。

配置示例

  • Table Store表的数据结构如下:
第一列主键 属性列 属性列 属性列 性别 属性列 属性列
uid name phone_number age sex content description
  • 目标:将Table Store中的name和phone_number两个字段全量导出到OpenSearch便于搜索。

完整配置如下所示:

  1. {
  2. "configuration": {
  3. "reader": {
  4. "plugin": "ots",
  5. "parameter": {
  6. "datasource": "source_name", # 数据集成中的数据源
  7. "column": [
  8. {
  9. "name": "uid" # Table Store中的主键列,导出到OpenSearch中后也必须是主键
  10. },
  11. {
  12. "name": "name" # Table Store中的属性列,用于搜索字段
  13. },
  14. {
  15. "name": "phone_number" # Table Store中的属性列,用于搜索字段
  16. }
  17. ],
  18. "range": {
  19. "begin": [
  20. {
  21. "type": "INF_MIN" # 导出数据的开始范围
  22. }
  23. ],
  24. "end": [
  25. {
  26. "type": "INF_MAX" # 导出数据的结束范围
  27. }
  28. ]
  29. },
  30. "table": "cdp" # Table Store中需要导出的表名
  31. }
  32. },
  33. "writer": {
  34. "plugin": "opensearch",
  35. "parameter": {
  36. "accessId": "OyRxxxxxxxxxxaXi ", # 阿里云AccessKeyID
  37. "endpoint": "https://opensearch-cn-hangzhou.aliyuncs.com",
  38. "accessKey": "Z3wVAaLxxxxxxxxxxxxxxxxAOdbJRZ ", # 阿里云AccessKeySecret
  39. "indexName": "index_name", # OpenSearch中的索引名称
  40. "table": "table_name", # OpenSearchindex_name中的table名称
  41. "host": "https://opensearch-cn-hangzhou.aliyuncs.com",
  42. "column": [ # OpenSearchindex_name中的table的列名,顺序和Reader中的Column顺序一致
  43. "uid", # OpenSearch中的主键,对应于TableStoreuid
  44. "name", # OpenSearch中的列名,对应于TableStore中的name
  45. "phone_number" # OpenSearch中的列名,对应于TableStore中的phone_number
  46. ],
  47. "writeMode": "add", # add模式
  48. "batchSize": "500",
  49. "skipDirtyRecord": "true", # 如果有文档错误跳过
  50. "ignoreWriteError": "false",
  51. }
  52. },
  53. "setting": {
  54. "errorLimit": {
  55. "record": "0" # 允许出现的错误数,0表示不允许任何一行出错误
  56. },
  57. "speed": {
  58. "concurrent": "1", # 并发度为1
  59. "mbps": "1" # 每秒导出速率为1MB
  60. }
  61. }
  62. },
  63. "type": "job",
  64. "version": "1.0"
  65. }
本文导读目录