DataWorks自定义odps udaf函数时,如果要传入两个参数,比如@Resolve(“string,string-string”),那udad中的Writable.readField()怎么写?
如果您希望在 UDTF 中传入两个参数,您可以使用 Resolve("string,string-string") 声明。在代码中,可以通过 Writable.readFields() 方法读取传入的两个参数:
private Text param1;
private Text param2;
public MyUDTF() {
param1 = new Text();
param2 = new Text();
}
public void process(Object[] args) throws UDFException {
// ...
}
public void close() throws UDFException {
// ...
}
public void configure(Map<String, String> arg2) {
// ...
}
public void setInput(Object[] args) {
// ...
}
public Object[] evaluate(Object[] args) throws UDFException {
// ...
return new Object[] { ... };
}
public void readFields(DataInput in) throws IOException {
param1.readFields(in);
param2.readFields(in);
}
public void write(DataOutput out) throws IOException {
param1.write(out);
param2.write(out);
}
}
您可以在 readFields 方法中读取两个参数,并在其他方法中使用它们。您需要将每个参数读入 Text 对象并将其写入 DataOutput 对象。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。