Github user 0x0FFF commented on the pull request:

    https://github.com/apache/spark/pull/8658#issuecomment-138851028
  
    @holdenk, there are two ways of implementing this:
    
    1. The one I've done: adding functionality to utilize binary function 
operation from `org.apache.spark.sql.functions` to `Column.py` and utilize 
`pow()` function from there for `__pow__` and `__rpow__`. Pros: with this 
approach you can add other functions from `org.apache.spark.sql.functions` to 
`Column.py`. Cons: non-consistent Column APIs between Python and Scala (to be 
fair, Scala does not have ** out of the box, so it is a question whether it is 
really an inconsistency)
    2. Add implementation of `**` and `pow` to `org.apache.spark.sql.Column` 
and utilize it in `Column.py` with existing `_bin_op` and `_reverse_op`. Pros: 
`**` operation is added to Scala `org.apache.spark.sql.Column` as well, plus it 
turns into slightly less new code. Cons: this would cover only `pow()` 
implementation, if in the future you would need to utilize other function from 
`org.apache.spark.sql.functions` in Python you would have to change 
`org.apache.spark.sql.Column` first once again. Plus in Scala the case with 
`3**col("a")` will not work as it would look for `**` implementation in `Int`
    
    In my opinion both options are possible, and second one might even be a bit 
better. I can easily switch to the second option, I've already implemented it 
locally. What is your view?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to