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

遇到一个Bug,大数据计算MaxCompute用Java-sdk方式创建的函数会报错找不到文件资源?

遇到一个Bug,大数据计算MaxCompute用Java-sdk方式创建的函数会报错找不到文件资源?image.png
image.png
但是用这三种方式创建的自定义函数都是正常的

展开
收起
真的很搞笑 2023-11-12 06:40:09 66 0
3 条回答
写回答
取消 提交回答
  • 用sdk的方式建好的函数,报错找不到资源,着急用的话先用SQL的方式传一下吧。
    我用你截图中的代码试了下,可以用。要不你再检查下步骤。其中用到的jar包,需要提前上传到project里。image.png
    image.png
    ,此回答整理自钉群“MaxCompute开发者社区2群”

    2023-11-12 14:35:32
    赞同 展开评论 打赏
  • 这个错误信息通常表示MaxCompute SDK在查找函数定义文件时遇到了问题。这可能是因为文件路径不正确,或者文件不存在。

    以下是一些可能的解决方法:

    1. 检查文件路径:确保你的函数定义文件的路径是正确的,并且可以在SDK的搜索路径中找到。

    2. 检查文件权限:确保你的文件有足够的权限被SDK访问。

    3. 检查文件存在:确保你的文件存在,并且没有被移动或删除。

    4. 更新SDK:如果你的SDK版本过低,可能会出现一些已知的问题。你可以尝试更新到最新的SDK版本。

    5. 提交工单:如果以上方法都无法解决问题,你可以提交一个工单给阿里云的技术支持团队,他们会帮助你进一步排查问题。

    2023-11-12 09:59:15
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    Function 对象时,没有正确设置资源路径(resourceList)导致的。请尝试将资源文件(MaxComputeUDF-1.0-SNAPSHOT.jar)添加到项目的类路径中,或者将资源文件的路径添加到 resourceList 中。
    以下是一个使用 Maven 的示例,将依赖的 JAR 文件添加到项目的类路径中:

    1. 在项目的根目录下创建一个名为 pom.xml 的文件。
    2. 在 pom.xml 文件中添加以下内容:


    ...


    com.aliyun.odps
    maxcompute-client
    1.0.0


    ...

    CopyCopy

    1. 在项目的编译配置中,使用 Maven 编译项目。例如,在 IntelliJ IDEA 中,选择 File -> Project Structure -> Project,然后选择 Dependencies 标签页,点击 + 按钮添加依赖。
    2. 在 Java 代码中,使用 odps.functions() 创建 Function 对象,如下所示:

    import com.aliyun.odps.functions.udf.UDF;
    import com.aliyun.odps.udf.UDFException;
    public class UpperTest extends UDF {
    public String evaluate(String input) throws UDFException {
    return input.toUpperCase();
    }
    }
    CopyCopy

    1. 在创建 Function 对象时,设置资源路径(resourceList):

    import com.aliyun.odps.Odps;
    import com.aliyun.odps.account.Account;
    import com.aliyun.odps.udf.UDF;
    import com.aliyun.odps.udf.UDFException;
    public class Main {
    public static void main(String[] args) {
    Odps odps = new Odps();
    Account account = odps.getAccount();
    String projectName = account.getDefaultProject();
    ArrayList resourceList = new ArrayList();
    resourceList.add("MaxComputeUDF-1.0-SNAPSHOT.jar");
    UpperTest func = new UpperTest();
    func.setName("upperTest");
    func.setResources(resourceList);
    try {
    odps.functions().create(projectName, func);
    } catch (UDFException e) {
    e.printStackTrace();
    }
    }
    }

    2023-11-12 07:51:51
    赞同 展开评论 打赏

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

相关产品

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

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