阿里云大数据实战记录1:不同模式建表及同步

一、标准模式建表

1.1 标准模式:代码建表

在对应的业务流程里新建ODPS SQL文件
image.png
填写相关配置
image.png
然后敲代码,比如我这里建立一个名叫dm_users_test.sql的文件做测试,敲完代码,运行。

-- dm_users_test.sql

-- 代码建表
create table if not exists dm_users_test
(
    id   bigint comment'用户id'
    ,sex string comment '用户性别'
)comment '测试表_by xin';

-- 插入数据SQL
INSERT OVERWRITE TABLE  dm_users_test
SELECT id,sex
FROM for_ods.users
limit 100;

运行完,如果没有报错,则表示已经通过代码建完表。这时通过表管理找到对应的表单,打开加上中文名,然后分别提交到开发环境和生成环境。
在这里插入图片描述

接下来是开发程序插入数据,也可以建表时完成,像我上面展示的代码,已经把建表和插入数据的代码放一起运行,建完表就插入了数据。
接下来就是给代码文件配置调度,并提交。将代码文件提交时注意把建表语句注释掉,减少一次执行,省资源。
在这里插入图片描述

提交时,或有一些审核和测试,根据自己的流程走。
image.png
我这里直接提交,然后到了发布步骤。提交后点击右上角蓝色的发布,点击跳转到发布界面。
image.png
在发布界面点击发布即可。
image.png

如果有多个待发布,也可以多选,底部会出现发布选中项选项,可以批量发布。
在这里插入图片描述

发布后点击右上角蓝色的运维,点击跳转到运维界面。
image.png
周期实例中可以搜索节点名称,注意使用提交的文件的文件名搜索,而不是表的名字,如果二者名称一致,则无所谓。在没有多个SQL文件操作同一个表(如:一个SQL文件增量刷新,一个SQL文件定期全量刷新的场景)的情况下,一般建议SQL文件名和表名保持一致,方便查找维护。
实例开始执行之后便可在生产环境表中插入数据。
image.png

1.2 标准模式:可视化建表

可视化建表和代码建表,在建表前会有一些差异,建表之后的操作是一致的,都要发布到开发环境和生产环境,然后开发代码以插入数据,设置调度、提交、发布。

下面主要讲讲可视化讲标的方法,其实很简单。
【表管理】界面,新建表,选择引擎和输入表名,新建。
在这里插入图片描述

填写相关建表信息,然后提交到开发和生产环境。(由于我已经发布开发环境,所以开发环境是灰色的)
在这里插入图片描述

提交开发开发和生产环境之后,就可以建SQL文件,开发代码,并设置调度、提交、发布。(同代码建表,略)

除了【表管理】,在【数据开发】界面也可以,如下图,选择新建>新建表>根据自己的需要选择引擎。
image.png
然后弹出一个窗口,选择对应的业务流程和表名称,然后新建。接下来就和表管理的第二步类似了,填写相关建表信息,然后提交到开发和生产环境。
image.png

二、简单模式建表

学会了标准模式建表之后,简单模式就很简单了。
简单模式不分开发环境和生产环境,在标准化建表的流程上,改同步两个环境为一个环境,砍掉发布环节,设置调度提交之后直接生成周期实例。

⚠️注意点

注意!!!不同实例生成方式对自动调度的周期实例会有一些影响:

  • T+1次日生成:
    • 23:30之前提交发布的任务,第二天周期实例生效,并自动调度运行。
    • 23:30之后提交发布的任务,第三天周期实例生效,并自动调度运行。
  • 发布后即时生成:
    • 23:30之前提交发布的任务,当天生成周期实例并自动调度。
      • 任务的定时运行时间在提交发布时间点**10分钟后**,DataWorks才会正常生成实例,该实例会真实跑数据。
      • 任务的定时运行时间距离提交发布时间不足10分钟时,DataWorks会生成一个已完成的实例,实例状态为实时生成的过期实例,过期实例不会真实跑数据。
    • 23:30之后提交发布的任务,实时转实例功能不生效。需要等到提交发布后的第三天实例才生效。

已有的实例从T+1次日生成变更为发布后即时生成,对当天实例的影响:已运行的实例会保留,未运行的实例将会被替换为实时转出的实例。

三、表单数据同步🔁

3.1 数据集成

当数据需要同步到其他的平台时,可以通过数据集成,新建离线或实时同步文件,配置好数据来源和数据去向。
image.png
如果数据去向没有相关数据源,需要先在工作空间管理新增数据源。
image.png
image.png

3.2 外部表

外部表有多种形式,还没有研究完,感兴趣可以自行阅读官方文档:数据导入导出和。
下面主要讲讲将maxcomputer数据导出到ADB MySQL的场景:
注:建外表时,建议在源表基础上加上_external_table后缀,方便搜索维护。

大概两点:
1、建外表时加上TABLE_PROPERTIES配置,大致如下:
假设

  • maxcomputer的源表(生产环境使用)是odps_project1.odps_nopart_import_test
  • ADB MySQL外部表(用于同步数据)是:adb_test.odps_nopart_import_test_external_table
  • ADB MySQL同步表(生产环境使用)是:adb_test.odps_nopart_import_test
CREATE TABLE IF NOT EXISTS odps_nopart_import_test_external_table  -- 在ADB MySQL建表,该表称外部表
(
  id int,
  name string,
  age int,
  dt string
)
ENGINE='ODPS'
TABLE_PROPERTIES='{
"endpoint":"http://service.cn.maxcompute.aliyun-inc.com/api", -- 阿里云的域名节点,参考https://help.aliyun.com/document_detail/34951.htm?spm=a2c4g.11186623.0.0.296d1fae4ZDeR0#section-oit-45y-23z
"accessid":"***********",        -- 账号的AK信息,参考:https://help.aliyun.com/document_detail/142101.htm?spm=a2c4g.11186623.0.0.296d3d16iaC04k#multiTask302
"accesskey":"****************",  -- 账号的AK信息,同上
"partition_column":"dt",         -- 分区信息,没有分区则不加
"project_name":"odps_project1",  -- MaxCompute中的工作空间名称,就是调用生产环境表单的前缀,如odps_project1.odps_nopart_import_test
"table_name":"odps_nopart_import_test" -- MaxCompute中的数据源表名。
}';       

2、在ADB MySQL对应的工作流程创建一个文件进行数据同步,需要定时更新的话,需要上调度。
注:需要在ADB MySQL先创建adb_test.odps_nopart_import_test 表,才可以执行以下代码。建表方式参考第一、二点。

-- 插入
INSERT INTO adb_test.odps_nopart_import_test 
SELECT * FROM adb_test.odps_nopart_import_test_external_table;
-- 覆盖导入
INSERT OVERWRITE INTO adb_test.odps_nopart_import_test 
SELECT * FROM adb_test.odps_nopart_import_test_external_table;
-- 异步覆盖写入
submit job insert overwrite into adb_test.odps_nopart_import_test 
select * from adb_test.odps_nopart_import_test_external_table;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xin学数据

为你点亮一盏灯,愿你前进无阻。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值