aboutsummaryrefslogtreecommitdiff
path: root/python/pyspark/sql/column.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/pyspark/sql/column.py')
-rw-r--r--python/pyspark/sql/column.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/python/pyspark/sql/column.py b/python/pyspark/sql/column.py
index 573f65f5bf..9ca8e1f264 100644
--- a/python/pyspark/sql/column.py
+++ b/python/pyspark/sql/column.py
@@ -91,6 +91,17 @@ def _func_op(name, doc=''):
return _
+def _bin_func_op(name, reverse=False, doc="binary function"):
+ def _(self, other):
+ sc = SparkContext._active_spark_context
+ fn = getattr(sc._jvm.functions, name)
+ jc = other._jc if isinstance(other, Column) else _create_column_from_literal(other)
+ njc = fn(self._jc, jc) if not reverse else fn(jc, self._jc)
+ return Column(njc)
+ _.__doc__ = doc
+ return _
+
+
def _bin_op(name, doc="binary operator"):
""" Create a method for given binary operator
"""
@@ -151,6 +162,8 @@ class Column(object):
__rdiv__ = _reverse_op("divide")
__rtruediv__ = _reverse_op("divide")
__rmod__ = _reverse_op("mod")
+ __pow__ = _bin_func_op("pow")
+ __rpow__ = _bin_func_op("pow", reverse=True)
# logistic operators
__eq__ = _bin_op("equalTo")