Если в моем приложении Flask + PySpark есть функция с аннотацией @udf или @pandas_udf, она не запустится. Если я просто удаляю аннотацию, она начинается.
Если я пытаюсь запустить приложение с помощью Flask, выполняется первый этап лексической интерпретации сценария. Например, отладчик останавливается на строках импорта, таких как
из pyspark.sql.functions import pandas_udf, udf, PandasUDFType
, Однако ни один оператор не выполняется вообще, включая начальный оператор app = Flask ( name ). (Может ли это быть какое-то скрытое исключение?)
Если я запускаю свое приложение без Flask, с той же самой функцией и с тем же импортом, оно работает.
Это импорт:
from pyspark.sql import SQLContext
from pyspark.sql import SparkSession
from pyspark.sql.functions import pandas_udf, udf, PandasUDFType
import pandas as pd
Это функция:
@pandas_udf('string', PandasUDFType.SCALAR)
def pandas_not_null(s):
return s.fillna("_NO_NA_").replace('', '_NO_E_')
Это утверждение, которое не выполняется, если @pandas_udf находится там:
app = Flask(__name__)
Вот как IntelliJ запускает Flask:
FLASK_APP = app
FLASK_ENV = development
FLASK_DEBUG = 1
In folder /Users/vivaomengao/projects/dive-platform/cat-intel/divecatintel
/Users/vivaomengao/anaconda/bin/python /Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py --module --multiproc --qt-support=auto --client 127.0.0.1 --port 56486 --file flask run
Я использую MacOS на своем собственном компьютере.