开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

在MaxCompute我编写了一个udf,我先是在本地测试可以,然后在mc上又测试没有结果,为什么?

在MaxCompute我编写了一个udf,我先是在本地测试了一下,能请求到结果,然后提交成udf,在mc上又测试了一下,就没有结果了,不知道为啥? lQLPJwvPAjqcsoLNATjNAoSwhFH3dMIo_RAEkEeJ6kCjAA_644_312.png import com.aliyun.odps.udf.UDF; import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL;

public class test extends UDF { // TODO define parameters and return type, e.g: public String evaluate(String a, String b) public String evaluate(String lat,String lon,String pt) { BufferedReader in = null; StringBuilder result = new StringBuilder(); try { URL url = new URL("https://www.gnssplanning.com/api/ionoindex/"+lat+"/"+lon+"/"+pt+"/24/3600"); //打开和url之间的连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //请求方式 //conn.setRequestMethod("POST"); conn.setRequestMethod("GET");

        //设置通用的请求属性
        conn.setConnectTimeout(100000);
        conn.setReadTimeout(100000);
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        //DoOutput设置是否向httpUrlConnection输出,DoInput设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个
        conn.setDoOutput(false);
        conn.setDoInput(true);

        //连接服务器
        conn.connect();
        // 取得输入流,并使用Reader读取
        in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
        String line;
        while ((line = in.readLine()) != null) {
            result.append(line);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }finally {
        try{
            if(in!=null){
                in.close();
            }
        }
        catch(IOException ex){
            ex.printStackTrace();
        }
    }
    return result.toString();
}

// private static String startGet(String lat,String lon,String pt){ // BufferedReader in = null; // StringBuilder result = new StringBuilder(); // try { // //GET请求直接在链接后面拼上请求参数 // String mPath = "https://www.gnssplanning.com/api/ionoindex/"+lat+"/"+lon+"/"+pt+"/24/3600"; // URL url = new URL(mPath); // HttpURLConnection conn = (HttpURLConnection)url.openConnection(); // conn.setRequestMethod("GET"); // //Get请求不需要DoOutPut // conn.setDoOutput(false); // conn.setDoInput(true); // //设置连接超时时间和读取超时时间 // conn.setConnectTimeout(10000); // conn.setReadTimeout(10000); // conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // //连接服务器 // conn.connect(); // // 取得输入流,并使用Reader读取 // in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); // String line; // while ((line = in.readLine()) != null) { // result.append(line); // System.out.println(result.toString()); //

展开
收起
三分钟热度的鱼 2023-07-04 20:12:26 93 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    如果您在本地测试通过的UDF在MaxCompute上测试失败,可能是由于以下原因:
    依赖库不一致:MaxCompute的UDF环境和本地环境可能存在依赖库不一致的问题,导致UDF在MaxCompute上无法正常运行。为了避免这种情况的发生,建议在编写UDF时,使用MaxCompute支持的依赖库,并确保依赖库的版本和MaxCompute环境一致。
    环境变量配置问题:在MaxCompute上运行UDF时,需要确保环境变量配置正确。如果环境变量配置不正确,可能会导致UDF无法正常运行。可以通过在UDF中输出日志信息来排查环境变量配置的问题。
    数据格式不匹配:在MaxCompute上运行UDF时,需要确保数据格式和类型匹配。如果数据格式不匹配,可能会导致UDF无法正常运行。可以通过在UDF中输出日志信息来排查数据格式的问题。

    2023-07-29 13:15:38
    赞同 展开评论 打赏
  • 当您在本地测试一个MaxCompute的UDF(User-Defined Function)时,可以成功获取结果。但是,当您将该UDF提交到MaxCompute上进行测试时,无法获取结果的情况可能是由于以下原因导致的:

    1. 代码依赖问题:请确保您的UDF代码在MaxCompute上运行时,所依赖的外部库、资源或文件已经正确上传和配置。如果UDF依赖外部资源,例如JAR包、数据文件等,需要使用MaxCompute提供的工具或命令将这些依赖项一并上传到MaxCompute,并在函数注册时指定相关路径。

    2. 参数或数据不匹配:在MaxCompute上执行UDF时,请确保传递给UDF的参数与预期的类型和格式完全匹配。检查您在MaxCompute上调用UDF的语句,并确认参数的正确性。

    3. 引用错误的函数或函数签名:在MaxCompute中注册UDF时,需要确保函数名称、函数签名以及输入输出参数类型与实际代码中定义的一致。请检查函数注册的代码,确保没有拼写错误、函数名大小写一致等问题。

    4. 计算资源限制:MaxCompute作为一个分布式计算引擎,可能会对计算资源进行限制以保证整个集群的稳定性和公平性。如果UDF需要大量的计算资源(如内存或CPU),可能会导致作业被取消或超时。请检查作业日志,查看是否有相关的错误信息或资源限制提示。

    5. 代码逻辑问题:请仔细检查您的UDF代码,确保其中没有逻辑错误、空指针异常或其他可能导致无结果的问题。可以在MaxCompute上启用调试模式,并通过打印日志或使用调试语句来排查和定位问题。

    2023-07-28 22:42:35
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 相关电子书

    更多
    Data+AI时代大数据平台应该如何建设 立即下载
    大数据AI一体化的解读 立即下载
    极氪大数据 Serverless 应用实践 立即下载