Как получить доступ к глобальному временному представлению в другом приложении pyspark? - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть спарк-оболочка, которая вызывает pyscript и создала глобальное временное представление

Это то, что я делаю в первом сценарии спарк-оболочки

from pyspark.sql import SparkSession

spark = SparkSession \
.builder \
.appName("Spark SQL Parllel load example") \
.config("spark.jars","/u/user/graghav6/sqljdbc4.jar") \
.config("spark.dynamicAllocation.enabled","true") \
.config("spark.shuffle.service.enabled","true") \
.config("hive.exec.dynamic.partition", "true") \
.config("hive.exec.dynamic.partition.mode", "nonstrict") \
.config("spark.sql.shuffle.partitions","50") \
.config("hive.metastore.uris", "thrift://xxxxx:9083") \
.config("spark.sql.join.preferSortMergeJoin","true") \
.config("spark.sql.autoBroadcastJoinThreshold", "-1") \
.enableHiveSupport() \
.getOrCreate()

#after doing some transformation I am trying to create a global temp view of dataframe as:

df1.createGlobalTempView("df1_global_view")
spark.stop()
exit()

Это моя вторая спарк-оболочкаскрипт:

from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Spark SQL Parllel load example") \
.config("spark.jars","/u/user/graghav6/sqljdbc4.jar") \
.config("spark.dynamicAllocation.enabled","true") \
.config("spark.shuffle.service.enabled","true") \
.config("hive.exec.dynamic.partition", "true") \
.config("hive.exec.dynamic.partition.mode", "nonstrict") \
.config("spark.sql.shuffle.partitions","50") \
.config("hive.metastore.uris", "thrift://xxxx:9083") \
.config("spark.sql.join.preferSortMergeJoin","true") \
.config("spark.sql.autoBroadcastJoinThreshold", "-1") \
.enableHiveSupport() \
.getOrCreate()

newSparkSession = spark.newSession()
#reading dta from the global temp view
data_df_save = newSparkSession.sql(""" select * from global_temp.df1_global_view""")
data_df_save.show()

newSparkSession.close()
exit()

Я получаю сообщение об ошибке ниже:

Stdoutput pyspark.sql.utils.AnalysisException: u"Table or view not found: `global_temp`.`df1_global_view`; line 1 pos 15;\n'Project [*]\n+- 'UnresolvedRelation `global_temp`.`df1_global_view`\n"

Похоже, я что-то упустил.Как я могу использовать одно и то же глобальное временное представление для нескольких сессий?Я неправильно закрываю сеанс зажигания в первой оболочке?Я уже нашел пару ответов о переполнении стека, но не смог выяснить причину.

1 Ответ

0 голосов
/ 19 декабря 2018

Вы используете createGlobalTempView, так что это временный вид, который не будет доступен после закрытия приложения.

Другими словами, он будет доступен в другом SparkSession, но не вдругое приложение PySpark.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...