У меня есть следующая задача:
- загрузка данных из одной таблицы из нескольких схем
- использование PySpark
- использование одного пользователя, который имеет доступ ко всем схемам вDB
Я использую следующий код (более или менее):
def connect_to_oracle_db(spark_session, db_query):
return spark_session.read \
.format("jdbc") \
.option("url", "jdbc:oracle:thin:@//<host>:<port>/<srvice_name") \
.option("user", "<user>") \
.option("password", "<pass>") \
.option("dbtable", db_query) \
.option("driver", "oracle.jdbc.driver.OracleDriver")
def run(self):
all_schemes = <list of all available schemes>
for str_schema in all_schemes:
db_query = "(Select * from " + str_schema + ".TABLE1) TABLE1_DATA"
df_table1 = slef.connect_to_oracle_db(db_query).load()
# process df_table1
Существует около 300 схем, и это довольно медленно, потому что каждая для итерации новое соединениесоздан и закрыт.Я хочу найти способ, как повторно использовать существующее соединение или как-то создать пул соединений.Это выглядит довольно неэффективно для меня.
У вас есть идеи, как повторно использовать соединение или создать пул соединений для PySpark?