遇到一个Bug,大数据计算MaxCompute用Java-sdk方式创建的函数会报错找不到文件资源?
但是用这三种方式创建的自定义函数都是正常的
用sdk的方式建好的函数,报错找不到资源,着急用的话先用SQL的方式传一下吧。
我用你截图中的代码试了下,可以用。要不你再检查下步骤。其中用到的jar包,需要提前上传到project里。
,此回答整理自钉群“MaxCompute开发者社区2群”
这个错误信息通常表示MaxCompute SDK在查找函数定义文件时遇到了问题。这可能是因为文件路径不正确,或者文件不存在。
以下是一些可能的解决方法:
检查文件路径:确保你的函数定义文件的路径是正确的,并且可以在SDK的搜索路径中找到。
检查文件权限:确保你的文件有足够的权限被SDK访问。
检查文件存在:确保你的文件存在,并且没有被移动或删除。
更新SDK:如果你的SDK版本过低,可能会出现一些已知的问题。你可以尝试更新到最新的SDK版本。
提交工单:如果以上方法都无法解决问题,你可以提交一个工单给阿里云的技术支持团队,他们会帮助你进一步排查问题。
Function 对象时,没有正确设置资源路径(resourceList)导致的。请尝试将资源文件(MaxComputeUDF-1.0-SNAPSHOT.jar)添加到项目的类路径中,或者将资源文件的路径添加到 resourceList 中。
以下是一个使用 Maven 的示例,将依赖的 JAR 文件添加到项目的类路径中:
...
com.aliyun.odps
maxcompute-client
1.0.0
...
CopyCopy
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
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();
}
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。