在带有Sqoop 1.4.6的HDP 2.3.2上,我正在尝试从SQL Server 2008导入表.
我能够成功连接到SQL Server,因为我可以列出数据库和表等.
但是,在导入过程中每次遇到以下错误:
错误:java.lang.RuntimeException:java.lang.RuntimeException:com.microsoft.sqlserver.jdbc.SQLServerException:与主机xxxx,端口1433的TCP/IP连接失败.错误:"连接超时.验证连接属性.确保主机上正在运行SQL Server实例并接受端口上的TCP/IP连接.确保防火墙不阻止与端口的TCP连接. ".
我再次实际上能够从SQL Server成功导入,但只能在几次重试后才能成功导入.但是,无论导入成功还是失败,我总是得到上面提到的错误,我想知道是什么原因导致了这个问题?每当失败时必须继续重复导入是相当麻烦的.
我已经关闭了SQL Server上的连接超时,虽然来自Hadoop集群和SQL Server的连接通过我们的公司防火墙,但是我们的管理员告诉我防火墙上的超时是3600秒.在达到该标记附近之前,进口失败.
只是我使用的一个sqoop命令的示例:
sqoop import \ --connect "jdbc:sqlserver://x.x.x.:1433;database=CEMHistorical" \ --table StreamSummary --username hadoop \ --password-file hdfs:///user/sqoop/.adg.password --hive-import \ --hive-overwrite --create-hive-table --split-by OfferedTime \ --hive-table develop.streamsummary --map-column-hive Call_ID=STRING,Stream_ID=STRING,OriginalCall_ID=STRING,TransactionID=TIMESTAMP
更新:
在与我们的网络团队取得联系后,似乎这绝对是一个网络问题.要添加上下文,Hadoop集群与SQL Server位于不同的VLAN上,并且它通过许多防火墙.为了测试,我尝试从与Hadoop集群相同的VLAN内的不同SQL Server导入,但我根本没有遇到此异常.