你传的第二个参数是string,这样试一下?
select("drop_fields(message, array('x'))")

不太确定我是否理解了你的问题(如果上面不行的话,建议你发一下exception)

> 在 2020年6月1日,下午1:59,jack <[email protected]> 写道:
> 
> 
> 
> 
> 
> 
> 
> 是的,对应参数没有填写正确,感谢;
> 另外请教,udf函数是不是目前不支持python的可变参数,我使用可变参数依然会报错参数不对的问题。
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 在 2020-06-01 11:01:34,"Dian Fu" <[email protected]> 写道:
>> The input types should be as following:
>> 
>> input_types=[DataTypes.STRING(), DataTypes.ARRAY(DataTypes.STRING())]
>> 
>> Regards,
>> Dian
>> 
>>> 在 2020年6月1日,上午10:49,刘亚坤 <[email protected]> 写道:
>>> 
>>> 目前在学习使用pyflink的Table api,请教一个pyflink udf函数报错问题:
>>> 
>>> @udf(input_types=[DataTypes.STRING()], result_type=DataTypes.STRING())
>>> def drop_fields(message, *fields):
>>>      import json
>>>      message = json.loads(message)
>>>      for field in fields:
>>>            message.pop(field)
>>>      return  json.dumps(message)
>>> 
>>> 
>>> st_env \
>>>      .form_path("source") \
>>>      .select("drop_fields(message,'x')") \
>>>      .insert_into("sink")
>>> 
>>> message 格式:
>>> {“a”:"1","x","2"}
>>> 
>>> 报错参数类型不匹配:
>>> Actual:(java.lang.String, java.lang.String)
>>> Expected:(org.apache.flink.table.dataformat.BinaryString)
>>> 
>>> 新手入门,请多指教,感谢。
>> 

回复