一、标准模式建表
1.1 标准模式:代码建表
在对应的业务流程里新建ODPS SQL文件
填写相关配置
然后敲代码,比如我这里建立一个名叫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;
运行完,如果没有报错,则表示已经通过代码建完表。这时通过表管理找到对应的表单,打开加上中文名,然后分别提交到开发环境和生成环境。
接下来是开发程序插入数据,也可以建表时完成,像我上面展示的代码,已经把建表和插入数据的代码放一起运行,建完表就插入了数据。
接下来就是给代码文件配置调度,并提交。将代码文件提交时注意把建表语句注释掉,减少一次执行,省资源。
提交时,或有一些审核和测试,根据自己的流程走。
我这里直接提交,然后到了发布步骤。提交后点击右上角蓝色的发布
,点击跳转到发布界面。
在发布界面点击发布即可。
如果有多个待发布,也可以多选,底部会出现发布选中项
选项,可以批量发布。
发布后点击右上角蓝色的运维
,点击跳转到运维界面。
在周期实例
中可以搜索节点名称,注意使用提交的文件的文件名搜索,而不是表的名字,如果二者名称一致,则无所谓。在没有多个SQL文件操作同一个表(如:一个SQL文件增量刷新,一个SQL文件定期全量刷新的场景)的情况下,一般建议SQL文件名和表名保持一致,方便查找维护。
实例开始执行之后便可在生产环境表中插入数据。
1.2 标准模式:可视化建表
可视化建表和代码建表,在建表前会有一些差异,建表之后的操作是一致的,都要发布到开发环境和生产环境,然后开发代码以插入数据,设置调度、提交、发布。
下面主要讲讲可视化讲标的方法,其实很简单。
【表管理】界面,新建表,选择引擎和输入表名,新建。
填写相关建表信息,然后提交到开发和生产环境。(由于我已经发布开发环境,所以开发环境是灰色的)
提交开发开发和生产环境之后,就可以建SQL文件,开发代码,并设置调度、提交、发布。(同代码建表,略)
除了【表管理】,在【数据开发】界面也可以,如下图,选择新建>新建表>根据自己的需要选择引擎。
然后弹出一个窗口,选择对应的业务流程和表名称,然后新建。接下来就和表管理的第二步类似了,填写相关建表信息,然后提交到开发和生产环境。
二、简单模式建表
学会了标准模式建表之后,简单模式就很简单了。
简单模式不分开发环境和生产环境,在标准化建表的流程上,改同步两个环境为一个环境,砍掉发布环节,设置调度提交之后直接生成周期实例。
⚠️注意点
注意!!!不同实例生成方式对自动调度的周期实例会有一些影响:
- T+1次日生成:
- 23:30之前提交发布的任务,第二天周期实例生效,并自动调度运行。
- 23:30之后提交发布的任务,第三天周期实例生效,并自动调度运行。
- 发布后即时生成:
- 23:30之前提交发布的任务,当天生成周期实例并自动调度。
- 任务的定时运行时间在提交发布时间点
**10分钟后**
,DataWorks才会正常生成实例,该实例会真实跑数据。 - 任务的定时运行时间距离提交发布时间不足10分钟时,DataWorks会生成一个已完成的实例,实例状态为实时生成的过期实例,过期实例不会真实跑数据。
- 任务的定时运行时间在提交发布时间点
- 23:30之后提交发布的任务,实时转实例功能不生效。需要等到提交发布后的第三天实例才生效。
- 23:30之前提交发布的任务,当天生成周期实例并自动调度。
已有的实例从T+1次日生成变更为发布后即时生成,对当天实例的影响:已运行的实例会保留,未运行的实例将会被替换为实时转出的实例。
三、表单数据同步🔁
3.1 数据集成
当数据需要同步到其他的平台时,可以通过数据集成,新建离线或实时同步文件,配置好数据来源和数据去向。
如果数据去向没有相关数据源,需要先在工作空间管理新增数据源。
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;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/66931.html