遇到一个Bug,大数据计算MaxCompute用Java-sdk方式创建的函数会报错找不到文件资源?
但是用这三种方式创建的自定义函数都是正常的
遇到一个Bug,大数据计算MaxCompute用Java-sdk方式创建的函数会报错找不到文件资源?[阿里云MaxCompute]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
遇到一个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();
}
}
}