基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据处理ETL篇

前言

大数据计算服务 MaxCompute(原名 ODPS)是一种快速、完全托管的EB级数据仓库解决方案。随着数据收集手段不断丰富,行业数据大量积累,数据规模已增长到了传统软件行业无法承载的海量数据(TB、PB、EB)级别。MaxCompute 致力于批量结构化数据的存储和计算,提供海量数据仓库的解决方案及分析建模服务。它具有大规模计算存储、多种计算模型、强数据安全、低成本、免运维、极致弹性扩展的优势。

可以将 Tablestore 中的数据于 MaxCompute 进行对接,后续,利用 MaxCompute 强大的计算能力,对数据进行进一步的消费和计算。

下面,本文将逐步说明如何将 Tablestore 中的数据导入 MaxCompute 中。

准备工作

需要开通MaxCompute服务,并创建工作空间

这里创建的工作空间命名为 test_tablestore_odps。

基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据处理ETL篇

数据导入

我们将订单系统中的 order_contract 表同步至 MaxCompute。MaxCompute 提供了多种方式读取 tablestore 中的数据,这里我们采用先构建外部表,然后再通过 SQL 根据外部表创建内部表进而投递数据。

创建外部表

以管理员身份登录 DataWorks控制台选择区域,在左侧导航栏,单击工作空间列表

基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据处理ETL篇

点击工作空间“test_tablestore_odps”右侧的进入数据开发

基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据处理ETL篇

在临时查询下新建节点选择 ODPS SQL。

基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据处理ETL篇

输入节点名称,点击提交。

基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据处理ETL篇

在页面中输入建外表语句:

CREATE EXTERNAL TABLE IF NOT EXISTS order_max_compute
(
odps_id string,
create_time string,
pay_time bigint,
has_paid bigint,
c_id string,
c_name string,
p_brand string,
p_count bigint,
p_id string,
p_name string,
p_price double,
s_id string,
s_name string,
total_price double
)
STORED BY 'com.aliyun.odps.TableStoreStorageHandler'
WITH SERDEPROPERTIES (
'tablestore.columns.mapping'=':oId,create_time,pay_time,has_paid,c_id,c_name,p_brand,p_count,p_id,p_name,p_price,s_id,s_name,total_price',
'tablestore.table.name'='order_contract',
'odps.properties.rolearn'='acs:ram::1831126559450753:role/aliyunodpsdefaultrole'
)
LOCATION 'tablestore://test-20210609.cn-hangzhou.ots-internal.aliyuncs.com';

其中 LOCATION 填入 Tablestore 经典网地址。odps.properties.rolearn 填入 RAM 中 AliyunODPSDefaultRole 的 ARN 信息。具体可参考:OTS外部表。点击运行按钮,完成外表创建。

基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据处理ETL篇

查看外部表

在临时查询的 SQL 窗口中输入

select * from order_max_compute limit 10000

可以看到查询结果

基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据处理ETL篇

创建内部表

创建外部表后,Tablestore的数据便引入到了 MaxCompute 生态中。但此时只是通过映射关系读取数据,数据还未存储在 MaxCompute 中。因此如果有需求需要反复读取数据,将相比每次从 Tablestore 去远程读数据,更高效的方法是先一次性把需要的数据导入到 MaxCompute 内部成为一个 MaxCompute(内部)表。可以利用外部表和 SQL 直接实现该需求。执行如下 SQL 建立内部表。

CREATE TABLE order_max_compute_internal AS
SELECT * FROM order_max_compute;

查看内部表

在 DataWorks管理控制台首页,点击工作空间列表,点击对应工作空间进入数据地图。点击我的数据,在列表中可以看到 MaxCompute 中的 order_max_computer_internal 表,点击进入。

基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据处理ETL篇

点击数据预览,可以看到导入的数据。

基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据处理ETL篇

总结

本文展示了如何将 Tablestore 中的数据导入到 MaxCompute(ODPS)。这为后续更为便捷的数据分析、数据计算操作提供了可能性。

上一篇:vue中在父组件点击按钮触发子组件的事件


下一篇:基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-数据同步 Canal 篇