FusionInsight平台——LibrA(MPP)批量数据导入

FusionInsight平台——LibrA(MPP)批量数据导入

LibrA(MPP)批量数据导入

COPY导入

  • 多数数据库拥有该命令
  • 适用: 低并发,本地小数据量导入
  • 示例:
    --从/home/jerry/data01.txt文件拷贝数据到表tb_test
    COPY tb_test 
    FROM '/home/jerry/data01.txt' 
    WITH(
    	format 'text',  -- 导入格式为TEXT(format 'text')
    	delimiter ',',  -- 分隔符为','(delimiter ',')
    	ignore_extra_data 'true',  -- 忽略多余列(ignore_extra_data 'true')
    	noescaping 'true' -- 不指定转义(noescaping 'true')
    );
    

GDS导入

  • 架构图:FusionInsight平台——LibrA(MPP)批量数据导入
  • 利用多个DataNode并行将数据导入到LibrA数据库中
  • 适用: 高并发、大数据量导入
  • 操作示例:
    1. 数据导入流程图
      FusionInsight平台——LibrA(MPP)批量数据导入
    • 蓝色路径:建立外表指向服务器的GDS进程,GDS进程指向数据源路径
    • 橙色路径:执行SQL,从外表插入数据到实际表。外表向GDS进程取数据,GDS从数据路径获取
    1. GDS工具安装
      • GDS工具由华为提供 Gauss200-OLAP-V100R006C10-REDHAT-64bit-gauss-loader.tar.gz
      • 在Linux服务器上解压后,进入gauss_loaders目录
      • 执行install_gaussload.sh 命令,即可安装
      • gds命令在…/gauss_loaders/bin/gds/gds
    2. GDS工具运行
      • 示例: …/gauss_loaders/bin/gds/gds -d /data/test -p 192.168.0.10:5000 -H 192.168.0.115/24 -l /home/jerry/log/gds_log.txt -D -t 2
      • 命令解释:
        -d 指定数据路径文件夹; -p 指定GDS进程IP和端口;-H 指定MPP数据库其中一台主节点服务器IP; -l 指定日志输出文件
    3. 在MPP库中建立外表
      • 建外表示例:
      CREATE FOREIGN TABLE foreign_test (
       -- 外表字段结构应和实际表一样,但不能加字段约束等类似的标记
        name VARCHAR(20),
        phone VARCHAR(20),
        address VARCHAR(30)
      )
      SERVER gsmpp_server 
      OPTIONS (
          location 'gsfs://192.168.0.10:5000/*',  -- location参数 指定了GDS所在的服务器
          format 'CSV',
          mode 'normal', 
          encoding 'utf8', 
          delimiter ',',   -- delimiter参数 指定了数据源每个字段之间的分割符
          quote E'\x1b', 
          null '',
          fill_missing_fields 'false'
      )
      LOG INTO err_test PER NODE REJECT -- LOG INTO err_test 指定了错误日志的输出到err_test表(会自动创建)
      LIMIT 'unlimited';
      
    4. 数据源样例
      路径: /data/test/p-0001
      内容:
      小明,18912345678,北京
      小王,15112345678,重庆
      小红,13912345678,上海
      
    5. 执行SQL,导入数据至LibrA(MPP)
      • 确保数据源已经准备好
      • 确保GDS进程已经配置正确,且已开启
      • 确保MPP库中外表建立无误
      • 使用SQL查询外表数据,插入到实际表中
      • 插入SQL示例:
      INSERT INTO tb_test SELECT * FROM foreign_test;
      

HDFS导入

  • 将HDFS上的大量数据快速导入到LibrA(MPP)
  • 适用: 大批量导入;HDFS上数据量过大,无法导出到本地使用GDS导入。
  • 操作示例:
    • 取得当前库的外部数据服务访问权限(后续补充)
    • 创建指向HDFS目录的外表,示例:
    CREATE FOREIGN TABLE region_test(
      name TEXT,
      phone TEXT,
      address TEXT
    )
    SERVER hdfs_server -- 外部数据服务名称
    OPTIONS(
      FORMART 'orc', -- 数据文件格式,目前只支持orc格式
      FOLDERNAME '/data/test' -- HDFS数据存储路径
    )
    DISTRIBUTE BY roundrobin;
    
    • 执行SQL,导入数据至LibrA(MPP)
    INSERT INTO tb_test SELECT * FROM foreign_test;