我正在使用pyspark,在我的程序中,我正在创建数据帧并将数据插入Oracle DB。但是无法从pyspark调用Oracle存储过程,所以我编写了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作业时,它执行得很好,但是当我在集群模式下提交时,它无法连接oracle服务器。
错误是“尝试为错误ora-24296检索文本时出错” 。
我正在使用MapR分发,并且已在所有节点上安装了oracle客户端,并且还能够在所有节点客户端模式下执行相同的作业。