
selectmax_pt('tableName')对于分区的表,此函数返回该分区表的一级分区的最大值,按字母排序,且该分区下有对应的数据文件。说明:tableName:String类型,指定表名(必须带上project名,例如:prjsrc),用户必须拥有该表的读权限。返回值:最大的一级分区的值。例:tab是分区表,该表对应的分区如下,且都有数据文件。pt='20080807'pt='20080808'selectfromtabwherept=max_pt('projecttab');该语句max_pt值为“20080808”,阿里云ODPS数据库SQL语句读出pt='20080808'分区下的数据。备注:如果只是用altertable的方式新加了一个分区,但是此分区中并无任何数据文件,则此分区不会做为返回值。
max_pt是个非常好用的函数,可以获取分区表的最新分区,正因为好用,促成使用人员养成了在任意场景下都使用max_pt来替代'${bizdate}'的习惯。什么场景下会使用?1当天数据无法及时产出,想使用最近一个分区的数据。2使用最新分区的数据,回刷历史某一天的数据。
使用max_pt可能引发的风险:1部分任务会产出未来日期的分区,比如某业务订单表ccbOrder有20080808分区,把未完结订单都放在20080808分区里,此时用max_pt可能会取不到想要的数据。2同一个结果表,分多段insert数据至同一结果表,当多段任务并未完成时,使用max_pt获取不到全量数据。3当datax同步任务刚添加好分区,数据未完成同步,使用max_pt,只获取了部分数据。4回刷数据,确保数据源自历史分区数据状态,使用max_pt达不到这个目的。
阿里数据库运用范围:大数据计算服务(MaxCompute,原ODPS),Data IDE(原BASE),数据集成(原CDP云道),大数据基础服务包括 Maxcompute 分析型数据库等。
无需用户自己考虑高可用、备份恢复等问题,而且阿里针对开源的数据库做了部分优化。另外提供一些诸如监控、告警、备份、恢复、调优的手段。就是减轻用户在业务无关方面的花销,花小钱省下力气聚焦在自己的业务上。
阿里数据库特性:
实例创建快速选择好需要的套餐后,RDS控制台会根据选择的套餐优化配置参数,短短几分钟一个可以使用的数据库实例就创建好了。
支持只读实例RDS只读实例面向对数据库有大量读请求而非大量写请求的读写场景,通过为标准实例创建多个RDS只读实例,赋予标准实例d性的读能力扩展,从而增加用户的吞吐量。
故障自动切换主库发生不可预知的故障(如:硬件故障)时,RDS将自动切换该实例下的主库实例,恢复时间一般<5min。
select max_pt('tableName')对于分区的表,此函数返回该分区表的一级分区的最大值,按字母排序,且该分区下有对应的数据文件。说明: tableName:String 类型,指定表名(必须带上 project 名,例如:prjsrc),用户必须拥有该表的读权限。返回值:最大的一级分区的值。例:tab 是分区表,该表对应的分区如下,且都有数据文件。pt='20080807' pt='20080808' select from tab where pt=max_pt('projecttab');该语句 max_pt 值为“20080808”,阿里云 ODPS 数据库 SQL 语句读出 pt='20080808' 分区下的数据。备注:如果只是用 alter table 的方式新加了一个分区,但是此分区中并无任何数据文件,则此分区不会做为返回值。
max_pt 是个非常好用的函数,可以获取分区表的最新分区,正因为好用,促成使用人员养成了在任意场景下都使用 max_pt 来替代 '${bizdate}' 的习惯。什么场景下会使用?1 当天数据无法及时产出,想使用最近一个分区的数据。2使用最新分区的数据,回刷历史某一天的数据。
使用 max_pt 可能引发的风险:1 部分任务会产出未来日期的分区,比如某业务订单表 ccbOrder 有 20080808 分区,把未完结订单都放在20080808 分区里,此时用 max_pt 可能会取不到想要的数据。2 同一个结果表,分多段 insert 数据至同一结果表,当多段任务并未完成时,使用 max_pt 获取不到全量数据。3当 datax 同步任务刚添加好分区,数据未完成同步,使用 max_pt,只获取了部分数据。4回刷数据,确保数据源自历史分区数据状态,使用 max_pt 达不到这个目的。
阿里云常见错误:
2021-07-19 20:21:27 INFO Current task status:RUNNING 2021-07-19 20:21:27 INFO Start execute shell on node oxs-base-biz-gateway011194073072cm3 2021-07-19 20:21:27 INFO Current working dir /home/admin/alisatasknode/taskinfo/20210719/phoenix/20/21/22/d1q1lur3nrr1by5gpt4i6s6l 2021-07-19 20:21:27 INFO Full Command 2021-07-19 20:21:27 INFO ------------------------- 2021-07-19 20:21:27 INFO /opt/taobao/tbdpapp/odpswrapper/odpswrapperpy /home/admin/alisatasknode/taskinfo//20210719/phoenix/20/21/22/d1q1lur3nrr1by5gpt4i6s6l//ads_school_course_student_count_day bizdate = 20210718 2021-07-19 20:21:27 INFO ------------------------- 2021-07-19 20:21:27 INFO List of passing environment 2021-07-19 20:21:27 INFO ------------------------- 2021-07-19 20:21:27 INFO SKYNET_ENDPOINT=>
《data x传递两个参数到json》。DataX 是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。DataX一般和DataX-Web联合使用,实现对任意数据库之间数据同步的调度执行。对于数据的同步,可以是全量更新和增量更新两种方式,对于大数据量的事物数据,例如:销售记录数据的同步,一般都是选择增量更新方式。
DataX-Web提供的增量更新支持基于自增ID的增量更新和基于时间的增量更新。在调度执行job任务时,dataX-Web会动态生成参数并在调用DataX执行时传入,例如:Python /opt/module/datax/bin/dataxpy -p "-DlastTime=2022-01-01 -DcurrentTime=2022-06-04"登录后复制DataX会把传入的参数写入环境变量,读入json脚本时会通过正则表达式查找${}包含的变量,并搜索环境变量进行替换。通过以上代码分析,可知在json任意的位置定义${}变量,都能够被替换,如:DataX的动态变量替换机制不够灵活,只能实现简单的变量替换,如果需要复杂的变量支持时,DataX就无法实现。例如:DataX-Web只能提供lastTime和currentTime两个参数,如果还需要支持其他参数,就没有办法了。针对这块考虑对DataX进行修改,引入avaitor表达式框架,通过Avaitor表达式丰富的功能,实现复杂的动态参数机制。祝您生活愉快,谢谢提问
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)