StarRocks外表[mysql, starrocks]同步流程

一、背景

StarRocks 支持以外部表 (External Table) 的形式,接入其他数据源。外部表指的是保存在其他数据源中的数据表,而 StartRocks 只保存表对应的元数据,并直接向外部表所在数据源发起查询。目前 StarRocks 已支持的第三方数据源包括 MySQL、StarRocks、Elasticsearch、Apache Hive™、Apache Iceberg 和 Apache Hudi。对于 StarRocks 数据源,现阶段只支持 Insert 写入,不支持读取,对于其他数据源,现阶段只支持读取,还不支持写入。

二、操作条件

  • 2.1 开发前的准备工作
    准备工作一
    • 拥有源端数据表的访问权限
    • 拥有目标端数据表的读写权限
    • 拥有目标端数据表访问的账号密码主机端口信息
      模拟数据同步信息
      全量表: ods.supplychain__dms_cph_kpi
      本地用户集群同步到云上用户集群(adhoc -> sr-adhoc)
      下面将进行MYSQL同步,StarRocks同步两种策略模拟展示

三、资源限制

1. 经过多方面实验, 发现表数据表在1亿以下或100G以下的成功率较高。若大于此条件,存在一定的失败几率。
2. 外表方式同步不能使用于etl调度场景,只适用于临时同步。

四、技术讲解

MYSQL外表同步策略

特性:MYSQL外表与新内表在同一集群, 元数据同步实时
本地ADHOC用户集群ods.supplychain__dms_cph_kpi表的建表信息

[Fri Aug 11 02:16:01 2023]:[‘default_cluster:cndlopsns’]>[集群FE]:[ods] [ADHOC用户集群] > show create table ods.supplychain__dms_cph_kpi \G;
*************************** 1. row ***************************
Table: supplychain__dms_cph_kpi
Create Table: CREATE TABLE supplychain__dms_cph_kpi (
dc_nbr int(11) NULL COMMENT “DC编号”,
dc_name varchar(20) NULL COMMENT “DC名称”,
month int(11) NULL COMMENT “月”,
quarter int(11) NULL COMMENT “季度”,
year int(11) NULL COMMENT “年”,
month_goal float NULL COMMENT “月目标”,
quarter_goal float NULL COMMENT “季度目标”,
year_goal float NULL COMMENT “年目标”,
month_all_goal float NULL COMMENT “月全部目标”,
quarter_all_goal float NULL COMMENT “季度全部目标”,
year_all_goal float NULL COMMENT “年全部目标”,
type int(11) NULL COMMENT “类型”,
etl_load_time varchar(20) NULL COMMENT “数据更新时间”
) ENGINE=OLAP
DUPLICATE KEY(dc_nbr, dc_name)
COMMENT “DC效率CPH目标表”
DISTRIBUTED BY HASH(dc_nbr) BUCKETS 1
PROPERTIES (
“replication_num” = “3”,
“in_memory” = “false”,
“storage_format” = “DEFAULT”
);
1 row in set (0.001 sec)

ERROR: No query specified

[Fri Aug 11 02:16:10 2023]:[‘default_cluster:cndlopsns’]>[集群FE]:[ods] [ADHOC用户集群] >

    1. 云上用户集群创建内表: ods.supplychain__dms_cph_kpi__olap

CREATE TABLE IF NOT EXISTS ods.supplychain__dms_cph_kpi__olap (
dc_nbr int(11) NULL COMMENT “DC编号”,
dc_name varchar(20) NULL COMMENT “DC名称”,
month int(11) NULL COMMENT “月”,
quarter int(11) NULL COMMENT “季度”,
year int(11) NULL COMMENT “年”,
month_goal float NULL COMMENT “月目标”,
quarter_goal float NULL COMMENT “季度目标”,
year_goal float NULL COMMENT “年目标”,
month_all_goal float NULL COMMENT “月全部目标”,
quarter_all_goal float NULL COMMENT “季度全部目标”,
year_all_goal float NULL COMMENT “年全部目标”,
type int(11) NULL COMMENT “类型”,
etl_load_time varchar(20) NULL COMMENT “数据更新时间”
) ENGINE=OLAP
DUPLICATE KEY(dc_nbr, dc_name)
COMMENT “DC效率CPH目标表”
DISTRIBUTED BY HASH(dc_nbr) BUCKETS 1
PROPERTIES (
“replication_num” = “3”,
“in_memory” = “false”,
“storage_format” = “DEFAULT”
);

    1. 云上用户集群创建外表: ods.supplychain__dms_cph_kpi__external

CREATE EXTERNAL TABLE IF NOT EXISTS ods.supplychain__dms_cph_kpi__external (
dc_nbr int(11) NULL COMMENT “DC编号”,
dc_name varchar(20) NULL COMMENT “DC名称”,
month int(11) NULL COMMENT “月”,
quarter int(11) NULL COMMENT “季度”,
year int(11) NULL COMMENT “年”,
month_goal float NULL COMMENT “月目标”,
quarter_goal float NULL COMMENT “季度目标”,
year_goal float NULL COMMENT “年目标”,
month_all_goal float NULL COMMENT “月全部目标”,
quarter_all_goal float NULL COMMENT “季度全部目标”,
year_all_goal float NULL COMMENT “年全部目标”,
type int(11) NULL COMMENT “类型”,
etl_load_time varchar(20) NULL COMMENT “数据更新时间”
) ENGINE=MYSQL
PROPERTIES (
“host” = “集群FE”,
“port” = “9030”,
“user” = “",
“password” = "
”,
“database” = “ods”,
“table” = “supplychain__dms_cph_kpi”
)
注意:
引擎请输入ENGINE=MYSQL
PROPERTIES (
“host” = “集群FE”, /本地用户集群登录IP/域名/f5/
“port” = “9030”, /端口9030/
“user” = “***********”, /本地用户集群登录账号/
“password” = “**********”, /本地用户集群登录密码/
“database” = “ods”, /需要同步库名/
“table” = “supplychain__dms_cph_kpi” /需要同步表名/
)

    1. 云上用户集群外表建立成功后, 即可使用外表查询数据: select count(*)验证, limit 2验证

[Fri Aug 11 02:25:57 2023]:[‘root’]>[sr-adhoc]:[ods] [腾讯云SR-ADHOC] > select count() from ods.supplychain__dms_cph_kpi__external;
±---------+
| count(
) |
±---------+
| 1776 |
±---------+
1 row in set (0.074 sec)

[Fri Aug 11 02:26:05 2023]:[‘root’]>[sr-adhoc]:[ods] [腾讯云SR-ADHOC] > select * from ods.supplychain__dms_cph_kpi__external limit 2;
±-------±--------±------±--------±-----±-----------±-------------±----------±---------------±-----------------±--------------±-----±--------------------+
| dc_nbr | dc_name | month | quarter | year | month_goal | quarter_goal | year_goal | month_all_goal | quarter_all_goal | year_all_goal | type | etl_load_time |
±-------±--------±------±--------±-----±-----------±-------------±----------±---------------±-----------------±--------------±-----±--------------------+
| 4802 | KSDC | 1 | 1 | 2022 | 205.71 | 215.21 | 211.75 | 169.5 | 158.88 | 158.3 | 1 | 2023-08-11 04:00:02 |
| 4802 | KSDC | 2 | 1 | 2022 | 220.64 | 215.21 | 211.75 | 155.34 | 158.88 | 158.3 | 1 | 2023-08-11 04:00:02 |
±-------±--------±------±--------±-----±-----------±-------------±----------±---------------±-----------------±--------------±-----±--------------------+
2 rows in set (1.954 sec)

[Fri Aug 11 02:26:01 2023]:[‘root’]>[sr-adhoc]:[ods] [腾讯云SR-ADHOC] > show create table ods.supplychain__dms_cph_kpi__external \G;
*************************** 1. row ***************************
Table: supplychain__dms_cph_kpi__external
Create Table: CREATE EXTERNAL TABLE supplychain__dms_cph_kpi__external (
dc_nbr int(11) NULL COMMENT “DC编号”,
dc_name varchar(20) NULL COMMENT “DC名称”,
month int(11) NULL COMMENT “月”,
quarter int(11) NULL COMMENT “季度”,
year int(11) NULL COMMENT “年”,
month_goal float NULL COMMENT “月目标”,
quarter_goal float NULL COMMENT “季度目标”,
year_goal float NULL COMMENT “年目标”,
month_all_goal float NULL COMMENT “月全部目标”,
quarter_all_goal float NULL COMMENT “季度全部目标”,
year_all_goal float NULL COMMENT “年全部目标”,
type int(11) NULL COMMENT “类型”,
etl_load_time varchar(20) NULL COMMENT “数据更新时间”
) ENGINE=MYSQL
PROPERTIES (
“host” = “集群FE”,
“port” = “9030”,
“user” = “cndlopsns”,
“password” = “”,
“database” = “ods”,
“table” = “supplychain__dms_cph_kpi”
);
1 row in set (0.009 sec)

ERROR: No query specified

[Fri Aug 11 02:26:05 2023]:[‘root’]>[sr-adhoc]:[ods] [腾讯云SR-ADHOC] >

    1. 云上用户集群数据成功读出, 最后一步将外表的数据写入内表: insert into

insert into ods.supplychain__dms_cph_kpi__olap select * from ods.supplychain__dms_cph_kpi__external;

Query OK, 1776 rows affected (0.186 sec)
{‘label’:‘insert_d92d1b87-37ee-11ee-9165-525400a6ca81’, ‘status’:‘VISIBLE’, ‘txnId’:‘311193’}

    1. 云上用户集群验证内表: select count(*)验证, limit 2验证

[Fri Aug 11 02:29:08 2023]:[‘root’]>[sr-adhoc]:[ods] [腾讯云SR-ADHOC] > select count() from ods.supplychain__dms_cph_kpi__olap;
±---------+
| count(
) |
±---------+
| 1776 |
±---------+
1 row in set (0.012 sec)

[Fri Aug 11 02:30:35 2023]:[‘root’]>[sr-adhoc]:[ods] [腾讯云SR-ADHOC] > select * from ods.supplychain__dms_cph_kpi__olap limit 2;
±-------±--------±------±--------±-----±-----------±-------------±----------±---------------±-----------------±--------------±-----±--------------------+
| dc_nbr | dc_name | month | quarter | year | month_goal | quarter_goal | year_goal | month_all_goal | quarter_all_goal | year_all_goal | type | etl_load_time |
±-------±--------±------±--------±-----±-----------±-------------±----------±---------------±-----------------±--------------±-----±--------------------+
| 4802 | KSDC | 1 | 1 | 2022 | 205.71 | 215.21 | 211.75 | 169.5 | 158.88 | 158.3 | 1 | 2023-08-11 04:00:02 |
| 4802 | KSDC | 2 | 1 | 2022 | 220.64 | 215.21 | 211.75 | 155.34 | 158.88 | 158.3 | 1 | 2023-08-11 04:00:02 |
±-------±--------±------±--------±-----±-----------±-------------±----------±---------------±-----------------±--------------±-----±--------------------+
2 rows in set (0.016 sec)

    1. 云上用户集群删除外表: drop table

drop table ods.supplychain__dms_cph_kpi__external ;
Query OK, 0 rows affected (0.012 sec)

    1. 本地用户集群数据表(ods.supplychain__dms_cph_kpi)上云成功!

STARROCKS外表同步策略

特性:StarRocks外表与源内表在同一集群, 外表创建属于异步, 元数据同步需要时间, 元数据同步结束后才可进行外表操作
1.19 版本开始,StarRocks 支持将数据通过外表方式写入另一个 StarRocks 集群的表中。这可以解决用户的读写分离需求,提供更好的资源隔离。用户需要首先在目标集群上创建一张目标表,然后在源 StarRocks 集群上创建一个 Schema 信息一致的外表,并在属性中指定目标集群和表的信息。
通过 INSERT INTO 写入数据至 StarRocks 外表,可以将源集群的数据写入至目标集群。借助这一能力,可以实现如下目标:

  • 集群间的数据同步。
  • 读写分离。向源集群中写入数据,并且源集群的数据变更同步至目标集群,目标集群提供查询服务。
    1. 云上用户集群创建内表

CREATE TABLE IF NOT EXISTS ods.supplychain__dms_cph_kpi__olap (
dc_nbr int(11) NULL COMMENT “DC编号”,
dc_name varchar(20) NULL COMMENT “DC名称”,
month int(11) NULL COMMENT “月”,
quarter int(11) NULL COMMENT “季度”,
year int(11) NULL COMMENT “年”,
month_goal float NULL COMMENT “月目标”,
quarter_goal float NULL COMMENT “季度目标”,
year_goal float NULL COMMENT “年目标”,
month_all_goal float NULL COMMENT “月全部目标”,
quarter_all_goal float NULL COMMENT “季度全部目标”,
year_all_goal float NULL COMMENT “年全部目标”,
type int(11) NULL COMMENT “类型”,
etl_load_time varchar(20) NULL COMMENT “数据更新时间”
) ENGINE=OLAP
DUPLICATE KEY(dc_nbr, dc_name)
COMMENT “DC效率CPH目标表”
DISTRIBUTED BY HASH(dc_nbr) BUCKETS 1
PROPERTIES (
“replication_num” = “3”,
“in_memory” = “false”,
“storage_format” = “DEFAULT”
);

    1. 本地用户集群创建外表

CREATE EXTERNAL TABLE IF NOT EXISTS ods.supplychain__dms_cph_kpi__external (
dc_nbr int(11) NULL COMMENT “DC编号”,
dc_name varchar(20) NULL COMMENT “DC名称”,
month int(11) NULL COMMENT “月”,
quarter int(11) NULL COMMENT “季度”,
year int(11) NULL COMMENT “年”,
month_goal float NULL COMMENT “月目标”,
quarter_goal float NULL COMMENT “季度目标”,
year_goal float NULL COMMENT “年目标”,
month_all_goal float NULL COMMENT “月全部目标”,
quarter_all_goal float NULL COMMENT “季度全部目标”,
year_all_goal float NULL COMMENT “年全部目标”,
type int(11) NULL COMMENT “类型”,
etl_load_time varchar(20) NULL COMMENT “数据更新时间”
) ENGINE=olap
DISTRIBUTED BY HASH(dc_nbr) BUCKETS 1
PROPERTIES (
“host” = “集群FE”,
“port” = “9020”,
“user” = “",
“password” = "
”,
“database” = “ods”,
“table” = “supplychain__dms_cph_kpi__olap”
)
注意:
引擎请输入ENGINE=olap
DISTRIBUTED BY HASH(dc_nbr) BUCKETS 1 /源表切割hash值, 分桶数需要带上/
PROPERTIES (
“host” = “集群FE”, /云上用户集群登录IP/域名/f5/
“port” = “9020”, /端口9020/
“user” = “", /云上用户集群登录账号/
“password” = "
”, /云上用户集群登录密码/
“database” = “ods”, /云上用户集群库名/
“table” = “supplychain__dms_cph_kpi__olap” /云上用户集群表名/
)

目前 StarRocks 外表使用上有以下限制:

  • 仅可以在外表上执行 insert into 和 show create table 操作,不支持其他数据写入方式,也不支持查询和 DDL。
  • 创建外表语法和创建普通表一致,但其中的列名等信息请保持同其对应的目标表一致。
  • 外表会周期性从目标表同步元信息(同步周期为 10 秒),在目标表执行的 DDL 操作可能会延迟一定时间反应在外表上。
    1. 本地用户集群 内表数据写入外表

insert into ods.supplychain__dms_cph_kpi__external select * from ods.supplychain__dms_cph_kpi
注意:
如果元数据没有同步完成, 或外表信息错误, insert into将会失败
ERROR 1064 (HY000): data cannot be inserted into table with empty partition.Use SHOW PARTITIONS FROM supplychain__dms_cph_kpi__external to see the currently partitions of this table.

    1. 本地用户集群删除外表: drop table
    1. 本地用户集群数据表(ods.supplychain__dms_cph_kpi)上云成功!

分区表外表同步语法

模拟数据同步信息
分区表: ods.itemcenter__restrictrule_d
本地用户集群同步到云上用户集群(adhoc -> sr-adhoc)
下面将进行MYSQL同步,StarRocks同步两种外表展示

源表:
CREATE TABLE IF NOT EXISTS ods.itemcenter__restrictrule_d (
ts date NULL COMMENT “分区列”,
channelid varchar(65533) NULL COMMENT “渠道号(多个用逗号隔开)”,
createby varchar(65533) NULL COMMENT “创建人”,
createbyenname varchar(65533) NULL COMMENT “创建人英文名”,
createtime varchar(65533) NULL COMMENT “创建时间,格式:yyyy-MM-dd HH:mm:ss”,
daysnum varchar(65533) NULL COMMENT “按天数限购,1表示一天内,2表示两天内,以此类推;统计daynum里的顾客订单里的商品是否符合达到限购数量配合ruletype=2,按天限购使用”,
effectivedate varchar(65533) NULL COMMENT “生效日期,为空表示立即生效,格式:yyyy-MM-dd”,
expirydate varchar(65533) NULL COMMENT “失效日期,为空表示永久不失效,格式:yyyy-MM-dd”,
global varchar(65533) NULL COMMENT “是否全球购,0 否,1 是”,
item1desc varchar(65533) NULL COMMENT “商品名称”,
itemnbr varchar(65533) NULL COMMENT “商品号”,
restrictnum varchar(65533) NULL COMMENT “商品限购数量,如果该值=0表示禁售”,
roleauthority varchar(65533) NULL COMMENT “创建人角色权限”,
ruleid varchar(65533) NULL COMMENT “规则ID”,
ruletype varchar(65533) NULL COMMENT " 1 按单限购,2 按天限购 range[1, 2]",
status varchar(65533) NULL COMMENT “是否可用,0是不可用,1为可用”,
storenbr varchar(65533) NULL COMMENT “门店号(多个用逗号隔开),如果改字段值为0,表示适用于所有门店这里只会给出实体店店号,无云仓店号”,
storetype varchar(65533) NULL COMMENT “业态只会有Sams和Hyer”,
upc varchar(65533) NULL COMMENT “商品条码不带校验位”,
updateby varchar(65533) NULL COMMENT “更新人”,
updatebyenname varchar(65533) NULL COMMENT “更新人英文名”,
updatetime varchar(65533) NULL COMMENT “更新时间 格式:yyyy-MM-dd HH:mm:ss,value是毫秒数,请自行解析成日期格式”,
etl_load_time datetime NULL COMMENT “etl刷数时间”
) ENGINE=OLAP
DUPLICATE KEY(ts, channelid)
COMMENT “商品全量限购禁售规则表”
PARTITION BY RANGE(ts)
(
PARTITION p20230803 VALUES [(‘2023-08-03’), (‘2023-08-04’)),
PARTITION p20230804 VALUES [(‘2023-08-04’), (‘2023-08-05’)),
PARTITION p20230805 VALUES [(‘2023-08-05’), (‘2023-08-06’)),
PARTITION p20230806 VALUES [(‘2023-08-06’), (‘2023-08-07’)),
PARTITION p20230807 VALUES [(‘2023-08-07’), (‘2023-08-08’)),
PARTITION p20230808 VALUES [(‘2023-08-08’), (‘2023-08-09’)),
PARTITION p20230809 VALUES [(‘2023-08-09’), (‘2023-08-10’)),
PARTITION p20230810 VALUES [(‘2023-08-10’), (‘2023-08-11’)),
PARTITION p20230811 VALUES [(‘2023-08-11’), (‘2023-08-12’)),
PARTITION p20230812 VALUES [(‘2023-08-12’), (‘2023-08-13’)),
PARTITION p20230813 VALUES [(‘2023-08-13’), (‘2023-08-14’)),
PARTITION p20230814 VALUES [(‘2023-08-14’), (‘2023-08-15’))
)
DISTRIBUTED BY HASH(storenbr) BUCKETS 1
PROPERTIES (
“replication_num” = “3”,
“dynamic_partition.enable” = “true”,
“dynamic_partition.time_unit” = “DAY”,
“dynamic_partition.time_zone” = “Asia/Shanghai”,
“dynamic_partition.start” = “-2147483648”,
“dynamic_partition.end” = “3”,
“dynamic_partition.prefix” = “p”,
“dynamic_partition.buckets” = “1”,
“in_memory” = “false”,
“storage_format” = “DEFAULT”
);

  • Mysql外表 – MYSQL外表与新内表在同一集群, 元数据同步实时, 无需等待

CREATE EXTERNAL TABLE IF NOT EXISTS ods.itemcenter__restrictrule_d__external (
ts date NULL COMMENT “分区列”,
channelid varchar(65533) NULL COMMENT “渠道号(多个用逗号隔开)”,
createby varchar(65533) NULL COMMENT “创建人”,
createbyenname varchar(65533) NULL COMMENT “创建人英文名”,
createtime varchar(65533) NULL COMMENT “创建时间,格式:yyyy-MM-dd HH:mm:ss”,
daysnum varchar(65533) NULL COMMENT “按天数限购,1表示一天内,2表示两天内,以此类推;统计daynum里的顾客订单里的商品是否符合达到限购数量配合ruletype=2,按天限购使用”,
effectivedate varchar(65533) NULL COMMENT “生效日期,为空表示立即生效,格式:yyyy-MM-dd”,
expirydate varchar(65533) NULL COMMENT “失效日期,为空表示永久不失效,格式:yyyy-MM-dd”,
global varchar(65533) NULL COMMENT “是否全球购,0 否,1 是”,
item1desc varchar(65533) NULL COMMENT “商品名称”,
itemnbr varchar(65533) NULL COMMENT “商品号”,
restrictnum varchar(65533) NULL COMMENT “商品限购数量,如果该值=0表示禁售”,
roleauthority varchar(65533) NULL COMMENT “创建人角色权限”,
ruleid varchar(65533) NULL COMMENT “规则ID”,
ruletype varchar(65533) NULL COMMENT " 1 按单限购,2 按天限购 range[1, 2]",
status varchar(65533) NULL COMMENT “是否可用,0是不可用,1为可用”,
storenbr varchar(65533) NULL COMMENT “门店号(多个用逗号隔开),如果改字段值为0,表示适用于所有门店这里只会给出实体店店号,无云仓店号”,
storetype varchar(65533) NULL COMMENT “业态只会有Sams和Hyer”,
upc varchar(65533) NULL COMMENT “商品条码不带校验位”,
updateby varchar(65533) NULL COMMENT “更新人”,
updatebyenname varchar(65533) NULL COMMENT “更新人英文名”,
updatetime varchar(65533) NULL COMMENT “更新时间 格式:yyyy-MM-dd HH:mm:ss,value是毫秒数,请自行解析成日期格式”,
etl_load_time datetime NULL COMMENT “etl刷数时间”
) ENGINE=MYSQL
PROPERTIES (
“host” = “集群FE”,
“port” = “9030”,
“user” = “",
“password” = "
”,
“database” = “ods”,
“table” = “itemcenter__restrictrule_d”
)

  • StarRocks外表 – StarRocks外表与源内表在同一集群, 外表创建属于异步, 元数据同步需要时间, 元数据同步结束后才可进行外表操作

CREATE EXTERNAL TABLE IF NOT EXISTS ods.itemcenter__restrictrule_d__external (
ts date NULL COMMENT “分区列”,
channelid varchar(65533) NULL COMMENT “渠道号(多个用逗号隔开)”,
createby varchar(65533) NULL COMMENT “创建人”,
createbyenname varchar(65533) NULL COMMENT “创建人英文名”,
createtime varchar(65533) NULL COMMENT “创建时间,格式:yyyy-MM-dd HH:mm:ss”,
daysnum varchar(65533) NULL COMMENT “按天数限购,1表示一天内,2表示两天内,以此类推;统计daynum里的顾客订单里的商品是否符合达到限购数量配合ruletype=2,按天限购使用”,
effectivedate varchar(65533) NULL COMMENT “生效日期,为空表示立即生效,格式:yyyy-MM-dd”,
expirydate varchar(65533) NULL COMMENT “失效日期,为空表示永久不失效,格式:yyyy-MM-dd”,
global varchar(65533) NULL COMMENT “是否全球购,0 否,1 是”,
item1desc varchar(65533) NULL COMMENT “商品名称”,
itemnbr varchar(65533) NULL COMMENT “商品号”,
restrictnum varchar(65533) NULL COMMENT “商品限购数量,如果该值=0表示禁售”,
roleauthority varchar(65533) NULL COMMENT “创建人角色权限”,
ruleid varchar(65533) NULL COMMENT “规则ID”,
ruletype varchar(65533) NULL COMMENT " 1 按单限购,2 按天限购 range[1, 2]",
status varchar(65533) NULL COMMENT “是否可用,0是不可用,1为可用”,
storenbr varchar(65533) NULL COMMENT “门店号(多个用逗号隔开),如果改字段值为0,表示适用于所有门店这里只会给出实体店店号,无云仓店号”,
storetype varchar(65533) NULL COMMENT “业态只会有Sams和Hyer”,
upc varchar(65533) NULL COMMENT “商品条码不带校验位”,
updateby varchar(65533) NULL COMMENT “更新人”,
updatebyenname varchar(65533) NULL COMMENT “更新人英文名”,
updatetime varchar(65533) NULL COMMENT “更新时间 格式:yyyy-MM-dd HH:mm:ss,value是毫秒数,请自行解析成日期格式”,
etl_load_time datetime NULL COMMENT “etl刷数时间”
) ENGINE=olap
DISTRIBUTED BY HASH(storenbr) BUCKETS 1
PROPERTIES (
“host” = “集群FE”,
“port” = “9020”,
“user” = “",
“password” = "
”,
“database” = “ods”,
“table” = “itemcenter__restrictrule_d__olap”
)

注意:
如果外表数据正在提交, 这个过程中删除目标内表时, 会抛出error:
ERROR 1064 (HY000): There are still some transactions in the COMMITTED state waiting to be completed. The table [supplychain__dms_cph_kpi__olap] cannot be dropped. If you want to forcibly drop(cannot be recovered), please use “DROP table FORCE”.
待数据提交完成后才可drop

五、总结
Mysql外表方式 比 StarRocks外表方式更加可观