如果您希望在 UDTF 中传入两个参数,您可以使用 Resolve(“string,string-string”) 声明。在代码中,可以通过 Writable.readFields() 方法读取传入的两个参数:
public class MyUDTF extends UDTF { 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 对象。