云原生多模数据库Lindorm支持Bulkload(批量快速导入数据)功能,可以更快更稳定的导入数据。本文介绍批量快速导入数据操作。

前提条件

  • 已购买LTS数据同步服务,具体操作请参见购买LTS
  • 已创建ODPS项目空间,具体操作请参见创建ODPS项目
  • LTS Bulkload功能目前处于公测中,开通此功能请提交工单或联系值班。
  • 已将客户端IP添加至白名单中,具体操作请参见设置白名单

功能优势

Bulkload与API数据导入对比有如下优点:
  • 导入数据更快。
  • 在线服务更稳定,不占用在线服务资源。
  • 资源使用更灵活,在线资源分开使用更加灵活。
  • 支持多种数据源。Bulkload功能支持多种数据源(CSV、ORC、Parquet、MaxCompute等)导入,您无需使用任何代码开发就可以实现数据的批量快速加载。
  • 降低资源成本。Bulkload功能基于Serverless Spark提供的云原生弹性计算资源能力,根据您的使用需求按量收费,可以大幅降低您的计算资源成本。

计费说明

Spark作业按量计费说明请参见Spark按量计费

使用限制

Bulkload功能目前仅支持在LTS操作页面创建。

  • 支持的源数据源:MaxCompute、CSV文件。
  • 支持的目标数据源:云原生多模数据库Lindorm宽表引擎。

操作步骤

  1. 访问LTS操作页面,具体操作请参见访问数据同步服务
  2. 添加数据源。
  3. 在左侧导航栏中,选择导入Lindorm/HBase > Bulkload
    批量导入数据
  4. 单击创建任务,配置以下参数。
    配置项 参数 描述
    选择数据源 源数据源 选择添加的ODPS数据源或者HDFS数据源。
    目标数据源 选择添加的Lindorm宽表数据源。
    插件配置 Reader配置
    • 如果源数据源为ODPS数据源,读插件配置说明如下:
      • table:ODPS的表名。
      • column:需要导入的ODPS列名。
      • partition:非分区表为空,分区表配置分区信息。
      • numPartitions:读取时的并发度。
    • 如果源数据源为HDFS数据源,读插件配置说明如下:
      • filePath:CSV文件所在目录。
      • header:CSV文件是否包含header行。
      • delimite:CSV文件分隔符。
      • column:CSV文件中列名以及对应类型。
    说明 读插件配置示例请参见配置示例
    Writer配置
    • namespace:Lindorm宽表的namespace。
    • lindormTable:Lindorm宽表名称。
    • compression:压缩算法,目前仅支持zstd,不使用压缩配置为none。
    • columns:Lindorm宽表的列名,需要和读配置中的column对应。
    说明 写插件配置示例请参见配置示例
    作业运行参数配置 Spark Driver规格 选择Spark Driver规格。
    Spark Executor规格 选择Spark Executor规格。
    Executor数量 输入Executor的数量。
    vpcID 输入Lindorm宽表实例的VPCID。
    spark配置 输入Spark配置,可不填写。
  5. 单击创建,在Bulkload页面查看创建的任务。
    任务创建
    说明 源数据源映射到Lindorm宽表,在Lindorm宽表不同分区的数据均匀情况下 , 数据容量为100 G(压缩比1:4)压缩后导入大概需要1个小时,根据具体情况不同可能会有区别。
  6. 可选:单击任务名,查看Spark任务。
    查看任务
    • 单击任务名,跳转至LogView页面,切换到Summary页签,可以查看Spark任务的UI。设计详情
    • 单击详情,可以查看Spark任务的执行日志。

配置示例

  • 读插件配置示例。
    • 源数据源为ODPS的读插件配置示例。
      {
        "table": "xxx",
        "column": [ 
          "id",
          "intcol",
          "doublecol",
          "stringcol",
          "string1col",
          "decimalcol"
        ],
        "partition": [
          "pt=1" 
        ],
        "numPartitions":10 
      }
    • 源数据源为HDFS的读插件配置示例。
      {
        "filePath":"csv/",
        "header": false,
        "delimiter": ",",
        "column": [
          "id|string",
          "intcol|int",
          "doublecol|double",
          "stringcol|string",
          "string1col|string",
          "decimalcol|decimal"
        ]
      }
  • 写插件配置示例。
    • 导入到Lindorm SQL表格的写插件配置示例。
      {
        "namespace": "default",
        "lindormTable": "xxx",
        "compression":"zstd",
        "columns": [
             "id",
             "intcol",
             "doublecol",
             "stringcol",
              "string1col",
              "decimalcol"
        ]
      }
    • 导入到Lindorm兼容HBase表格的写插件配置示例。
      {
        "namespace": "default",
        "lindormTable": "xxx",
        "compression":"zstd",
        "columns": [
          "ROW||String",    //ROW代表rowkey,String表示类型
          "f:intcol||Int",  //列簇:列名||列类型
          "f:doublecol||Double",
          "f:stringcol||String",
          "f:string1col||String",
          "f:decimalcol||Decimal"
        ]
      }