zero323 commented on a change in pull request #27406:
[SPARK-30681][PYSPARK][SQL] Add higher order functions API to PySpark
URL: https://github.com/apache/spark/pull/27406#discussion_r374270624
##########
File path: python/pyspark/sql/column.py
##########
@@ -129,6 +129,103 @@ def _(self, other):
return _
+def _unresolved_named_lambda_variable(*name_parts):
+ """
+ Create o.a.s.sql.expressions.UnresolvedNamedLambdaVariable and
+ convert it to o.s.sql.Column
+
+ :param name_parts: str
+ """
+ sc = SparkContext._active_spark_context
+ name_parts_seq = _to_seq(sc, name_parts)
+ expressions = sc._jvm.org.apache.spark.sql.catalyst.expressions
+ return Column(
+ sc._jvm.Column(
+ expressions.UnresolvedNamedLambdaVariable(name_parts_seq)
+ )
+ )
+
+
+def _get_lambda_parameters(f):
+ import inspect
+
+ signature = inspect.signature(f)
+ parameters = signature.parameters.values()
+
+ # We should exclude functions that use
+ # variable args and keyword argnames
+ # as well as keyword only args
+ supported_parmeter_types = {
+ inspect.Parameter.POSITIONAL_OR_KEYWORD,
+ inspect.Parameter.POSITIONAL_ONLY,
+ }
+
+ # Validate that
+ # function arity is between 1 and 3
+ if not (1 <= len(parameters) <= 3):
Review comment:
> This conversation reminds of the discussion on #16537. Perhaps we should
discuss a general approach to Python-specific validation on the dev list?
Yeah, I had a déjà vu feeling. Thanks for digging this up @nchammas.
General discussion is a great idea. I am aware that I am biased here, but I
see people struggling with where, when and how guest languages fail, almost
every week, and it is really hard to get rid of the feeling that what we have
at the moment is just not enough.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]