Python循环函数问题与pyspark

我是相对较新的火花,当我尝试在导入pyspark函数后使用python的builtin round()函数时遇到了问题.这似乎与我如何导入pyspark函数有关,但我不确定区别是什么或为什么一种方式会导致问题而另一种方法不会.

预期行为:

import pyspark.sql.functions
print(round(3.14159265359,2))
>>> 3.14

意外行为:

from pyspark.sql.functions import *
print(round(3.14159265359,2))
>>> ERROR

AttributeError                            Traceback (most recent call last)
<ipython-input-1-50155ca4fa82> in <module>()
      1 from pyspark.sql.functions import *
----> 2 print(round(3.1454848383,2))

/opt/spark/python/pyspark/sql/functions.py in round(col, scale)
    503     """
    504     sc = SparkContext._active_spark_context
--> 505     return Column(sc._jvm.functions.round(_to_java_column(col), scale))
    506 
    507 

AttributeError: 'NoneType' object has no attribute '_jvm'

解决方法:

将pyspark.sql.functions导入为F以避免冲突.

通过这种方式,您可以正常使用所有python内置函数,当您想使用pyspark函数时,可以将它们用作F.round

上一篇:python – pyspark reduce方法的歧义


下一篇:python – 重命名spark数据帧中的嵌套字段