MaxCompute提供了一些工具以帮助您监控作业和资源使用情况。
阿里云监控服务:您可以配置监控指标,对包年包月资源、实时作业消费、Tunnel上传下载数据量及作业运行时长进行监控。通过监控大盘,您可以实时观察监控图表,了解各监控指标的实时变化。
MaxCompute管家:这是一个提供作业信息查看、资源消耗查看(包含存储和CU资源)、项目查看及调整、配额组增删改查等涉及日常运维能力的管理平台。
数据质量监控:除了对MaxCompute自身的作业和资源进行监控外,还可以支持EMR(E-MapReduce)、Hologres、AnalyticDB for PostgreSQL、CDH Hive等数据源的监控。
DataWorks智能监控:如果您是通过DataWorks使用MaxCompute,那么可以通过其智能监控功能配置自定义监控规则进行作业超时监控。此外,还可以针对具体调度节点进行资源配置的调整。
这些工具可以帮助您及时了解资源的使用情况,发现并解决可能出现的问题,保障作业的正常运行。
当两个表进行Join操作时,如果它们的数据不符合MapJoin规范,您可以尝试以下优化方案:
使用WHERE子句进行过滤:在MaxCompute SQL中,当两个表进行Join操作时,建议在主表的分区限制条件位置使用WHERE子句。具体来说,可以先用子查询过滤数据,然后在主表的WHERE子句中写入这些条件。
开启SkewJoin功能:MaxCompute提供了数据倾斜设置参数 set odps.sql.skewjoin=true; 开启SkewJoin功能。但需要注意,仅仅开启SkewJoin并不能对任务的运行产生实际影响。
使用Sort-Merge Join算法:这是一种常见的连接算法,适用于大表之间的连接操作。其基本思想是将两个大表按照连接键进行排序,然后逐个比较并合并相同连接键的记录。
使用Broadcast Join算法:当一个大表非常大于另一个表时,可以使用Broadcast Join算法。该算法将小表复制多份,分发到各个节点上,每个节点都对小表执行局部Join操作,最后再将各个节点的结果合并。
使用Bucketed MapJoin算法:当两个表的大小相对较大且连接键分布均匀时,可以考虑使用Bucketed MapJoin算法。这种算法首先按照连接键对两个表进行桶化处理,然后将两个表的数据分发到各个节点上执行局部Join操作,最后再将各个节点的结果合并。