阿里云大数据实战记录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;
### 回答1: CentOS 7启动httpd服务失败可能有多种原因,以下是一些常见的解决方法: 1. 检查httpd配置文件是否正确:可以使用命令`httpd -t`检查httpd配置文件是否正确,如果有错误,需要修改配置文件。 2. 检查端口是否被占用:可以使用命令`netstat -tlnp`查看端口是否被占用,如果被占用需要释放端口或修改httpd配置文件中的端口号。 3. 检查httpd服务是否安装:可以使用命令`rpm -qa | grep httpd`查看httpd服务是否安装,如果没有安装需要先安装httpd服务。 4. 检查httpd服务是否启动:可以使用命令`systemctl status httpd`查看httpd服务是否启动,如果没有启动需要使用命令`systemctl start httpd`启动httpd服务。 5. 检查SELinux是否开启:如果SELinux开启,可能会导致httpd服务启动失败,需要使用命令`setenforce 0`关闭SELinux,或者修改SELinux策略。 以上是一些常见的解决方法,如果以上方法都无法解决问题,可以查看httpd服务日志文件,找到具体的错误信息,然后根据错误信息进行解决。 ### 回答2: CentOS 7上的httpd服务启动失败可能有多种原因。以下列出了一些常见问题和解决方法: 1. 端口被占用 当httpd试图占用已被其他程序占用的端口时会启动失败。此时可以通过使用`netstat -tunlp`命令检查端口占用情况,然后杀死占用该端口的进程及时释放端口。或者修改httpd的配置文件,将端口修改为未被占用的端口。 2. 配置文件错误 有时httpd服务的配置文件中可能出现错误,例如语法错误或路径错误等等。在启动httpd服务之前,可以使用`apachectl configtest`命令进行检查,如果输出“Syntax OK”,则表示配置文件没有错误。如果出现错误,则需要根据错误提示进行相应修改。 3. 依赖关系问题 如果httpd依赖的其他程序或库缺失,也会导致启动失败。可以通过使用`systemctl status httpd.service`命令来查看httpd服务状态,如果输出“Failed to start”或“Loaded: failed”,则需要检查依赖关系是否完整。 4. SELinux问题 当SELinux启用时,有时会导致httpd服务启动失败。在这种情况下,可以在SELinux上禁用httpd服务,或者修改httpd配置文件解决SELinux相关的问题。 5. 用户权限问题 httpd服务启动可能需要特定的用户权限。如果使用的用户权限不够,则无法启动。可以尝试使用root用户启动httpd服务,或者根据需要修改相应的用户权限。 ### 回答3: CentOS 7中的Apache HTTP服务器(httpd)是一个常见的Web服务器,如果遇到httpd服务启动失败的情况,可能会影响服务器正常的工作和对外服务的稳定性。本文将提供一些可能会导致httpd服务启动失败的原因,并给出相应的解决方法。 1. 端口被占用 如果端口被其他进程占用,httpd服务就无法启动。可以通过 netstat -tulpn 命令查看端口占用情况,并杀死占用该端口的进程。如果端口被 httpd 服务自身占用,可以通过 systemctl restart httpd 命令重启 httpd 服务;如果是其他进程占用了端口,可以通过 kill 命令杀死该进程或更改 httpd.conf 文件配置,将 httpd 服务的端口改为其他空闲端口,重新启动。 2. 配置文件错误 httpd 服务的配置文件通常是 /etc/httpd/conf/httpd.conf,如果其中存在语法错误、权限问题或者其它配置错误,可能会导致 httpd 服务启动出错。可以通过将 httpd.conf 文件备份后删掉,重新执行 yum install httpd 命令安装 httpd 服务,然后手动修改 httpd.conf 文件,逐个检查每个配置项是否正确,确认无误后重启 httpd 服务。 3. SELinux 问题 SELinux 是 CentOS 7中提供的一种安全模块,它可以对系统文件和应用程序进行安全管控。如果 SELinux 配置不正确,可能会阻止 httpd 服务正常启动。可以通过修改 /etc/selinux/config 文件中 SELINUX=disabled 来暂时关闭 SELinux,然后重新启动 httpd 服务;或者一个更优的方式是,根据日志确定问题原因,使用命令 semanage 或者 setsebool 等工具将相关目录或者配置加入到 SELinux 许可列表中,重新启动 httpd 服务,以恢复服务正常工作。 4. 防火墙问题 如果你的 CentOs 7 服务器启用了防火墙,有可能会导致 httpd 服务启动失败。可以通过检查防火墙相关配置来确定问题原因,解决方案是修改防火墙规则,将端口 80 或者 443 等 httpd 服务需要的端口放行,重新启动 httpd 服务。 总之,当遇到 httpd 服务启动失败时,不要慌张,可以先通过日志或者执行命令查看错误信息,找到错误原因,然后根据错误原因一步一步解决问题。在解决问题过程中注意备份原始配置文件,以免造成不必要的损失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Xin学数据

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

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

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

打赏作者

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

抵扣说明:

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

余额充值