如何解决DbVisualizer工作时,Netezza pySpark连接失败
更新:此问题已解决。这是网址中的错字。
-
我正在尝试在Windows 10 1909上使用pyspark从Netezza读取数据。
我可以使用DbVisualizer从中读取没有问题。然后,我尝试运行pyspark --driver-class-path <path to nzjdbc.jar> --jars <path to nzjdbc.jar> --master local[*]
(同一台机器,VPN连接,JDBC驱动程序jar等)。
我在pyspark shell中使用了以下代码:
dataframe = spark.read.format("jdbc").options(
url="jdbc:netezza://<server>:5480/<database>",dbtable="ADMIN.<table>",user="***",password="***",driver="org.netezza.Driver",).load()
但这对我来说失败了,大约10到20秒后,下面的堆栈(我也尝试添加queryTimeout="300"
,但这没什么用):
"...\AppData\Local\Continuum\miniconda3\envs\spark\lib\site-packages\pyspark\python\lib\py4j-0.10.9-src.zip\py4j\protocol.py",line 328,in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o41.load.
: org.netezza.error.NzSQLException: Connection timed out: connect
at org.netezza.sql.NzConnection.initSocket(NzConnection.java:2859)
at org.netezza.sql.NzConnection.open(NzConnection.java:293)
at org.netezza.datasource.NzDatasource.getConnection(NzDatasource.java:675)
at org.netezza.datasource.NzDatasource.getConnection(NzDatasource.java:662)
at org.netezza.Driver.connect(Driver.java:155)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.$anonfun$createConnectionFactory$1(JdbcUtils.scala:64)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:56)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation$.getSchema(JDBCRelation.scala:226)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:35)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:339)
at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:279)
at org.apache.spark.sql.DataFrameReader.$anonfun$load$2(DataFrameReader.scala:268)
at scala.Option.getOrElse(Option.scala:189)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:268)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
at py4j.Gateway.invoke(Gateway.java:282)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.GatewayConnection.run(GatewayConnection.java:238)
at java.lang.Thread.run(Unknown Source)
同事可以在Mac上运行相同的代码而不会出现问题(也在VPN上)。
Windows或Netezza本身是否存在某些可能影响客户端能够连接到Netezza的东西?还是我可能在pyspark
命令中丢失了某些内容?
解决方法
您可以尝试增加LoginTimeout值吗? FYI queryTimeout是指单个查询的超时。
,我在网址中发现了一个错字。那真是一个偷偷摸摸的人
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。