code: def log(arg1, arg2=None):
      
      sc = SparkContext._active_spark_context
      if arg2 is None:
          jc = sc._jvm.functions.log(_to_java_column(arg1))
      else:
          jc = sc._jvm.functions.log(arg1, _to_java_column(arg2))
      return Column(jc)
docs: Returns the first argument-based logarithm of the second argument.
  
      If there is only one argument, then this takes the natural logarithm of the argument.
  
      >>> df.select(log(10.0, df.age).alias('ten')).rdd.map(lambda l: str(l.ten)[:7]).collect()
      ['0.30102', '0.69897']
  
      >>> df.select(log(df.age).alias('e')).rdd.map(lambda l: str(l.e)[:7]).collect()
      ['0.69314', '1.60943']