Pyspark 3.7 and Spark 2.3
У меня в test.py есть функция:
def get_or_create_spark_session():
spark = SparkSession \
.builder \
.getOrCreate()
return spark
Я пытаюсь использовать один и тот же сеанс в разных местах моего приложения pyspark. Поэтому я вызываю эту функцию везде, где мне нужно, и пытаюсь использовать функцию getOrCreate()
SparkSession для повторного использования существующего сеанса.
Я создаю gloablTempView в одном файле main.py
и пытаюсь использоватьто же самое в test.py
также (в некоторой третьей функции).
Я вызываю эту функцию как:
В main.py
spark = get_or_create_spark_session()
x = spark.read.json("D:\\test.json")
x.createGlobalTempView("dummy")
И в test.py, Я снова пытаюсь это сделать в какой-то другой функции xyz () как:
spark = get_or_create_spark_session()
y = spark.sql("""select * from global_temp.dummy""")
y.show()
Я предполагаю, что, поскольку я не закрываю или не завершаю SparkSession в main.py, я должен иметь возможностьиспользовать тот же GlobalTempView в любом месте приложения с помощью getOrCreate ().
Но вместо этого я получаю сообщение об ошибке:
pyspark.sql.utils.AnalysisException: "Table or view not found: `global_temp`.`dummy`; line 1 pos 14;\n'Project [*]\n+- 'UnresolvedRelation `global_temp`.`dummy`\n"
Не правильно ли мое мышление? Или имплментация не так? Являются ли эти две "искры" совершенно разными сессиями? Как правильно достичь того, чего я пытаюсь достичь?
Я не хочу читать файл test.json два раза, подразумевая, что я создаю две сессии spark в одном приложении.