无法连接SAS OnDemand for Academic(SASpy)求解决方案
问题
按照SAS官方文档配置saspy后,连接SAS OnDemand for Analytics时出现负载均衡生成器超时错误,无法建立SAS会话。
配置信息
sascfg_personal.py配置:
SAS_config_names=['oda'] oda = {'java' : 'C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath\\java.exe', #US Home Region 1 'iomhost' : ['odaws01-usw2.oda.sas.com','odaws02-usw2.oda.sas.com','odaws03-usw2.oda.sas.com','odaws04-usw2.oda.sas.com'], 'iomport' : 8591, 'authkey' : 'oda', 'encoding' : 'utf-8' }
_authinfo配置:
oda user q***g@gmail.com password ****
执行代码
import saspy sas = saspy.SASsession()
错误信息
Using SAS Config named: oda
We failed in getConnection
The application could not log on to the server "odaws04-usw2.oda.sas.com:8591". The load balancing object spawner timed out.SAS process has terminated unexpectedly. RC from wait was: 4294967290
SAS Connection failed. No connection established. Double check your settings in sascfg_personal.py file.Attempted to run program C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe with the following parameters:['C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe', '-classpath', 'C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\saspyiom.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\iomclient\log4j-1.2-api-2.12.4.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\iomclient\log4j-api-2.12.4.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\iomclient\log4j-core-2.12.4.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\iomclient\sas.security.sspi.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\iomclient\sas.core.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\iomclient\sas.svc.connection.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\iomclient\sas.rutil.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\iomclient\sas.rutil.nls.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\iomclient\sastpj.rutil.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\thirdparty\glassfish-corba-internal-api.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\thirdparty\glassfish-corba-omgapi.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\thirdparty\glassfish-corba-orb.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\thirdparty\pfl-basic.jar;C:\Users\PHAN\anaconda3\lib\site-packages\saspy\java\thirdparty\pfl-tf.jar', 'pyiom.saspy2j', '-host', 'localhost', '-stdinport', '64138', '-stdoutport', '64139', '-stderrport', '64140', '-iomhost', 'odaws01-usw2.oda.sas.com;odaws02-usw2.oda.sas.com;odaws03-usw2.oda.sas.com;odaws04-usw2.oda.sas.com', '-iomport', '8591', '-user', 'quocphantruong@gmail.com', '-lrecl', '1048576', '']
No SAS process attached. SAS process has terminated unexpectedly.
Invalid response from SAS on inital submission. printing the SASLOG as diagnosticSASIOConnectionError Traceback (most recent call last)
Input In [17], in <cell line: 1>()
----> 1 sas = saspy.SASsession()File ~\anaconda3\lib\site-packages\saspy\sasbase.py:606, in SASsession.init(self, **kwargs)
603 pass
605 if failed:
--> 606 raise SASIOConnectionError(res)
608 if self.pyenc is not None:
609 if self._io.sascfg.encoding != '':SASIOConnectionError: Failure establishing SASsession.
No SAS process attached. SAS process has terminated unexpectedly.
解决方案
针对负载均衡超时问题,可尝试以下步骤排查解决:
确认Java版本兼容性:saspy推荐使用Java 8或11,当前配置的Java路径指向Oracle的javapath,可能存在版本不匹配。直接指定具体的Java安装路径(如
C:\Program Files\Java\jdk1.8.0_301\bin\java.exe),避免路径跳转带来的版本问题。简化IOM主机列表:负载均衡超时可能是部分主机连接不畅,先保留1-2个主机测试,比如只保留
odaws01-usw2.oda.sas.com,确认能正常连接后再逐步添加其他主机。检查网络连通性:用PowerShell命令
Test-NetConnection odaws01-usw2.oda.sas.com -Port 8591测试端口是否可访问。如果不通,检查本地防火墙、代理设置,确保允许访问该端口。验证认证文件:确认
_authinfo文件放在C:\Users\<你的用户名>目录下,文件名开头的下划线不能遗漏,且用户名、密码完全正确。延长连接超时时间:在
sascfg_personal.py的oda配置中添加'timeout' : 30(单位秒),应对网络延迟导致的超时。修改后的配置示例:
oda = {'java' : 'C:\\Program Files\\Java\\jdk1.8.0_301\\bin\\java.exe', 'iomhost' : ['odaws01-usw2.oda.sas.com'], 'iomport' : 8591, 'authkey' : 'oda', 'encoding' : 'utf-8', 'timeout' : 30 }
内容的提问来源于stack exchange,提问作者PTQuoc

