在前面我们介绍了一些doris的数据导入方式,这篇文章我们再介绍一个使用Datax的方式把数据导入到doris中去。
datax是阿里巴巴开源的一款数据迁移工具,在工作中我们经常会使用到。他可以从一个数据源把数据写入另外一个数据源。非常的方便,因此这里我们演示下使用Datax把数据导入到Doris中去。
下面我们演示的场景是使用datax从源mysql把数据导入到doris中去。
一、下载Datax的doris writer
这里的编译的话,可以参考此文章《使用Datax源码编译DorisWriter介绍》。编译完之后,我们把他放到datax的plugin/writer目录下。
二、在mysql中创建表
使用如下sql创建表
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL COMMENT '姓名', `age` tinyint(3) DEFAULT NULL COMMENT '年龄', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
然后插入几条数据
INSERT INTO `demo`.`user` (`id`, `name`, `age`) VALUES (1, '张三', 25); INSERT INTO `demo`.`user` (`id`, `name`, `age`) VALUES (2, '李四', 20);
这里我们的表是:
三、在doris中创建一张user表
在doris中我们创建一张user表,用来装载mysql导入过来的数据,创建表的sql语句如下:
CREATE TABLE `user` ( `id` int(11) NOT NULL COMMENT "", `name` varchar(20) NULL COMMENT "姓名", `age` tinyint(4) NULL COMMENT "年龄" ) ENGINE=OLAP UNIQUE KEY(`id`) COMMENT "OLAP" DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "in_memory" = "false", "storage_format" = "V2" );
这里我们创建的是一张和mysql一样的表。
四、编写datax的配置文件
这里我们直接粘贴datax的配置文件即可。
{
  "job": {
    "setting": {
      "speed": {
        "channel": 3,
        "byte": 1048576
      },
      "errorLimit": {
        "record": 0,
        "percentage": 0.02
      }
    },
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "username": "yRjwDFuoPKlqya9h9H2Amg==",
            "password": "XCYVpFosvZBBWobFzmLWvA==",
            "column": [
              "`id`",
              "`name`",
              "`age`"
            ],
            "splitPk": "",
            "connection": [
              {
                "table": [
                  "user"
                ],
                "jdbcUrl": [
                  "jdbc:mysql://121.37.103.180:3307/demo?useUnicode=true&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8"
                ]
              }
            ]
          }
        },
        "writer": {
          "name": "doriswriter",
          "parameter": {
            "loadUrl": [
              "121.37.103.180:8040"
            ],
            "column": [
              "id",
              "name",
              "age"
            ],
            "username": "root",
            "password": "",
            "flushInterval": 30000,
            "connection": [
              {
                "jdbcUrl": "jdbc:mysql://121.37.103.180:9030/demo",
                "selectedDatabase": "demo",
                "table": [
                  "user"
                ]
              }
            ],
            "loadProps": {
              "format": "json",
              "strip_outer_array": true
            }
          }
        }
      }
    ]
  }
}然后我们执行一下
可以看到执行成功了,然后我们再去看下doris表是否有数据
没有任何问题,这里我们使用doris导入就成功了。
备注:
1、在datax的配置文件里面,doris的loadurl端口需要写成8040,官网使用的是8030,导入会出问题。报错:Caused by: org.apache.http.ProtocolException: Content-Length header already present。所以我们直接使用be的端口即可,这里的8040是Be的端口,8030是Fe的端口。
2、本文的贴图使用的是datax-web,具体的使用可参考如下文章:《使用datax-web搭建一个可视化的数据迁移平台》




		
		
		
		
还没有评论,来说两句吧...