使用MaxCompute Java SDK 执行任务卡住了,怎么办?

简介: 场景一 用户A A: “亲,用 MaxCompute Java SDK 跑作业,为什么卡住不动了?” me: “有 Logview 吗?发来看下” A: “没有,我用的是SDK,没Logview” 场景二 用户B B :“亲,用 MaxCompute Java SDK 访问 Table,为什么卡住半天没反应?” me:“卡在哪一行了?” B:"就 RestClient retry 然后卡住了" 去繁就简 用户 A 的问题在于没有 instance 的 logview,导致无法追踪 instance 的运行过程。

场景一

用户A
A: “亲,用 MaxCompute Java SDK 跑作业,为什么卡住不动了?”
me: “有 Logview 吗?发来看下”
A: “没有,我用的是SDK,没Logview”

场景二

用户B
B :“亲,用 MaxCompute Java SDK 访问 Table,为什么卡住半天没反应?”
me:“卡在哪一行了?”
B:"就 RestClient retry 然后卡住了"

去繁就简

用户 A 的问题在于没有 instance 的 logview,导致无法追踪 instance 的运行过程。
通常用户在创建 instance 后会调用 instance.waitForSuccess() 来等待作业运行完成,一旦作业耗时巨大,程序就卡在这一步了,此时如果有 logview ,就能查看追踪查看作业等待的具体原因了。

用户 B 的问题在于 sdk 的 Restclient 本身有重试机制,从表面来看就是卡住了,没有任何输出。
如果在每次重试的时候都输出错误,就可以快速定位问题节约时间了。我已经遇到好几个公共云用户因为缺包导致一直卡住几分钟才丢出异常,严重影响了工作效率。

那么问题可以归结为下面两点:

1【 怎么使用 MaxCompute Java SDK 生成 instance Logview 】

答案很简单, MaxCompute Java SDK 提供了 logview 接口,详情可查看 SDK Java Doc

String logview = odps.logview().generateLogView(instance, 7 * 24);

两个参数: instance 对象,logview token 超时时间 (单位:小时)

再次提醒用户,在使用 SDK 的时候,请为每个 instance 记录 Logview,一旦遇到问题可快速追踪。

当然如果改代码很麻烦,那还有一个绝招。在 MaxCompute Console 中使用 wait <instance_id> 命令也可以得到Logview。

2【 能不能在每次重试的时候,都把错误输出呢?】

当然可以。 MaxCompute Java SDK  提供了抽象类  RetryLogger   详情可查看  SDK Java Doc

public static abstract class RetryLogger {

    /**
     * 当 RestClent 发生重试前的回调函数
     *
     * @param e
     *     错误异常
     * @param retryCount
     *     重试计数
     * @param retrySleepTime
     *     下次需要的重试时间
     */
    public abstract void onRetryLog(Throwable e, long retryCount, long retrySleepTime);
  }

用户只需实现一个自己的  RetryLogger  子类,然后在初始化 odps 对象的时候使用  odps.getRestClient().setRetryLogger(new UserRetryLogger());  就可以将日志输出。

一个典型的实现如下:

 
 
// init odps
odps.getRestClient().setRetryLogger(new UserRetryLogger());

// your retry logger
public class UserRetryLogger extends RetryLogger {

    @Override
    public void onRetryLog(Throwable e, long retryCount, long sleepTime) {
      if (e != null && e instanceof OdpsException) {
        String requestId = ((OdpsException) e).getRequestId();
        if (requestId != null) {
          System.err.println(String.format(
              "Warning: ODPS request failed, requestID:%s, retryCount:%d, will retry in %d seconds.",
              requestId, retryCount, sleepTime));
          return;
        }
      }
      System.err.println(String.format(
          "Warning: ODPS request failed:%s, retryCount:%d, will retry in %d seconds.", e.getMessage(),retryCount,
          sleepTime));
    }
  }

掌握上面两种技巧,就可以快速定位问题。


相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
SQL 分布式计算 运维
如何对付一个耗时6h+的ODPS任务:慢节点优化实践
本文描述了大数据处理任务(特别是涉及大量JOIN操作的任务)中遇到的性能瓶颈问题及其优化过程。
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何开发ODPS Spark任务
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
416 2
|
分布式计算 大数据 Java
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
314 0
|
存储 分布式计算 监控
大数据增加分区减少单个任务的负担
大数据增加分区减少单个任务的负担
238 1
|
存储 SQL 分布式计算
Java连接阿里云MaxCompute例
要使用Java连接阿里云MaxCompute数据库,首先需在项目中添加MaxCompute JDBC驱动依赖,推荐通过Maven管理。避免在代码中直接写入AccessKey,应使用环境变量或配置文件安全存储。示例代码展示了如何注册驱动、建立连接及执行SQL查询。建议使用RAM用户提升安全性,并根据需要配置时区和公网访问权限。具体步骤和注意事项请参考阿里云官方文档。
1240 10
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之如何解决datax同步任务时报错ODPS-0410042:Invalid signature value
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
资源调度 分布式计算 大数据
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
607 0
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之运行DDL任务时出现异常,具体错误是ODPS-0110061,该如何处理
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
398 3
|
SQL 分布式计算 大数据
MaxCompute产品使用合集之如何使用SDK获取ODPS上的资源文件
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
242 1
|
分布式计算 监控 调度
ODPS问题之在发布ODPS任务时,使用exclude和extra选项如何解决
ODPS问题之在发布ODPS任务时,使用exclude和extra选项如何解决
270 0

热门文章

最新文章

相关产品

  • 云原生大数据计算服务 MaxCompute