[ 
https://issues.apache.org/jira/browse/SPARK-61006?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hyukjin Kwon resolved SPARK-61006.
----------------------------------
    Resolution: Fixed

Issue resolved by pull request 209
[https://github.com/apache/spark-connect-rust/pull/209]

> Pass the arguments of Python UDF and UDTF calls of the Python client as 
> PySpark does
> ------------------------------------------------------------------------------------
>
>                 Key: SPARK-61006
>                 URL: https://issues.apache.org/jira/browse/SPARK-61006
>             Project: Spark
>          Issue Type: Bug
>          Components: Connect
>    Affects Versions: connect-rust-4.3.0
>            Reporter: Hyukjin Kwon
>            Assignee: Hyukjin Kwon
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: connect-rust-4.3.0
>
>
> In PySpark Connect, a call of a Python UDF or UDTF takes keyword arguments: 
> {{UserDefinedFunction.__call__(*args, **kwargs)}} and 
> {{UserDefinedTableFunction.__call__(*args, **kwargs)}} send each keyword 
> argument as a {{NamedArgumentExpression}}, so that {{plus(a=lit(1), 
> b=col("x"))}} calls {{plus}} with {{a}} and {{b}}, and its column is 
> {{Column<'plus(a => 1, b => x)'>}}. An argument of a UDTF call is a column or 
> a column name, so {{udtf_call("x")}} refers to the column {{x}}.
> The Rust-backed Python client drops the keyword arguments of a UDF call, so 
> the call fails on the server with a {{PythonException}} of the missing 
> arguments, and its column is {{Column<'plus()'>}}; a UDTF call with keyword 
> arguments raises {{TypeError}}; and a UDTF call takes a string as a literal, 
> so {{udtf_call("x")}} returns a row of {{'x'}} where PySpark 4.3.0 raises 
> {{UNRESOLVED_COLUMN}}. Pass the arguments as PySpark does.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to