Проблемы с Python Round при использовании pyspark - PullRequest
0 голосов
/ 28 сентября 2018

Я относительно новичок в спарке, и у меня возникла проблема, когда я пытаюсь использовать встроенную функцию python round () после импорта функций pyspark.Кажется, это связано с тем, как я импортирую функции 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'

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Импорт import pyspark.sql.functions as F, чтобы избежать конфликта.

Таким образом, вы можете нормально использовать все встроенные функции Python, а когда вы хотите использовать функции pyspark, используйте их как F.round

0 голосов
/ 28 сентября 2018

Не выполняйте импорт *, так как это может испортить ваше пространство имен.

Pyspark имеет функцию округления: http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.functions.round

Поэтому встроенная функция round заменяется на pyspark.sql.functions.round

...