2

我在 Data Fusion 中创建了一个简单的管道,它从单个 MS SQL Server 表中读取数据并写入 BigQuery。当连接到 SQL Server 并出现套接字握手错误时,它会失败。

我在创建自己的 dataproc 集群时看到了这个问题,我知道这与使用 conscrypt 作为 ssl 时默认使用的 dataproc 有关。我还找到了一种解决方法,即在创建集群时设置一个属性:dataproc:dataproc.conscrypt.provider.enable=false

在运行 Data Fusion 时这是不可能的,因为我无法控制集群的创建方式。我已尝试将该属性添加到引擎配置部分,但它不起作用,并且该属性未显示在 dataproc 集群配置页面中。

这是数据融合中的堆栈跟踪:

java.net.SocketException:套接字已关闭
    在 org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:390) ~[libconscrypt.jar:1.2.0-SNAPSHOT]
    在 org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:225) ~[libconscrypt.jar:1.2.0-SNAPSHOT]
    在 com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1688) ~[na:na]
    在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1977) ~[na:na]
    在 com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628) ~[na:na]
    在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459) ~[na:na]
    在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773) ~[na:na]
    在 com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168) ~[na:na]
    在 io.cdap.plugin.db.JDBCDriverShim.connect(JDBCDriverShim.java:60) ~[na:na]
    在 java.sql.DriverManager.getConnection(DriverManager.java:664) ~[na:1.8.0_212]
    在 java.sql.DriverManager.getConnection(DriverManager.java:208) ~[na:1.8.0_212]

我只想在 Data Fusion 中从 SQL Server 读取数据。

4

1 回答 1

4

发生这种情况是因为默认情况下 Dataproc 使用 Conscrypt SSL 提供程序,该提供程序在使用 Conscrypt SSL 提供程序创建 SSL 上下文时存在错误。

解决方案要解决运行管道时的问题,请在创建 Dataproc 集群时禁用使用 conscrypt。这可以通过为管道设置以下运行时参数来完成。

system.profile.properties.dataproc:dataproc.conscrypt.provider.enable false

以下屏幕截图显示了如何使用 UI 为管道设置此项

在此处输入图像描述

于 2019-06-26T19:20:11.390 回答