Я использую pyspark. В моей программе я создаю фрейм данных и вставляю данные в Oracle DB. Но не могу вызвать хранимую процедуру Oracle из pyspark, поэтому я написал функцию python для вызова хранимой процедуры с использованием cx_Oracle. Ниже приведен код
Код:
import cx_Oracle
import datetime
def oracle_sp_Call(id,status):
print('Inside func of sp calling')
print(id)
print(status)
dns_tns=cx_Oracle.makedsn('server','port',service_name='servie_name')
con=cx_Oracle.onnect(user='username',passwor='password',dsn=dns_tns)
#Placing my sername user id pwd an deatils
print('connection established')
cur=con.cursor()
myvar=cur.var(cx_Oracle.NUMBER)
curdate=datetime.datetime.now()
cur.callproc('Sp_Name',(id,status,curdate,myvar))
con.commit()
cur.close()
con.close()
Моя проблема в том, что когда я отправляю свою работу pyspark в режиме клиента, она выполняется нормально, но когда я отправляю в режиме кластера, он не может подключиться к серверу оракула.
Ошибка «ошибка при попытке получить текст для ошибки ora-24296» .Я использую дистрибутив MapR и установил клиент Oracle на всех узлах, а также могу выполнять одинаковые задания в режиме клиента всех узлов.