从AWS Glue读取Netezza时的连接超时

时间:2020-05-21 20:21:56

标签: jdbc aws-glue netezza

我正在尝试使用AWS Glue将数据从本地Netezza数据库提取到S3中。我到目前为止编写的代码(不完整)

df = glueContext.read.format("jdbc")\
    .option("driver", "org.netezza.Driver")\
    .option("url", "jdbc:netezza://NetezzaHost01:5480/Netezza_DB")\
    .option("dbtable", "ADMIN.table1")\
    .option("user", "myUser")\
    .option("password", "myPassword")\
    .load()

print(df.count())

我使用的是自定义JDBC驱动程序jar,因为AWS Glue本身不支持Netezza(该驱动程序由IBM提供),并且在触发作业作为依赖时将其指定。

此代码不断失败,并显示超时错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o68.load.
: org.netezza.error.NzSQLException: Connection timed out (Connection timed out)

我尝试过的一些方法不起作用: -用火花代替胶水阅读 -使用一个很小的表(<100行)作为源

我应该补充一点,即Netezza数据库位于公司防火墙之后,但是在使用自定义驱动程序时,我看不到任何指定安全组的选项(就像对Glue本机连接所做的那样)。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

1)如果您要访问本地的netezza主机,则首先需要验证您是否能够从为胶粘工作选择的VPC上访问netezza。

2)这引起了一个问题,因为VPC是根据您添加到胶水上的连接选择的,因此显然没有提到netezza被支持。但是,您仍然可以输入netezza网址并进行设置。测试可能无法进行,但是至少您可以选择一个子网和sec-group。您的sec组应该打开netezza端口

3)我猜您的vpc可以直接连接到办公室网络/ vpn。只要您的防火墙接受您添加到粘合作业中的子网的CIDR范围内的连接,它就可以正常工作。您可能需要请管理netezza防火墙的团队从您的VPC /子网ip-range打开连接