开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

DataWorks udad中的Writable.readField()怎么写?

DataWorks自定义odps udaf函数时,如果要传入两个参数,比如@Resolve(“string,string-string”),那udad中的Writable.readField()怎么写?

展开
收起
wenti 2023-02-06 18:36:53 291 0
1 条回答
写回答
取消 提交回答
  • RNA

    如果您希望在 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 对象。

    2023-02-06 23:08:57
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

热门讨论

热门文章

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载