gpt4 book ai didi

java - 检测到 Sqoop 套接字超时 : Read timed out while reading data from Mainframe and insert into Hive

转载 作者:行者123 更新时间:2023-12-02 10:33:17 25 4
gpt4 key购买 nike

请找到我的以下问题并帮助我解决它。

我有一个 sqoop 语句,它使用 attunity jdbc 驱动程序将数据从大型机带到 Hadoop(Hive)。

    sqoop import \
--connect "jdbc:attconnect://X.X.1.1:8883;DefTdpName=PROD_E;OneTdpMode=1"\
--driver "com.attunity.jdbc.NvDriver" \
--query Select * FROM how_record WHERE \$CONDITIONS" \
--fields-terminated-by "\t" \
--hive-import \
--hive-overwrite \
--delete-target-dir \
--null-string '\\N' \
--null-non-string '\\N' \
--hive-delims-replacement '' \
--target-dir "path/how_record" \
--fetch-size 50000 \
--hive-table "how_record" -m 1

当我第一次运行上面的 sqoop 语句时,我不断收到套接字超时错误。

ERROR manager.SqlManager: Error executing statement:
java.sql.SQLException: JBC0088E: JBC0002E: Socket timeout detected: Read timed out

java.sql.SQLException: JBC0088E: JBC0002E: Socket timeout detected: Read timed out

at com.attunity.jdbc.NvSQLWarning.createSQLException(Unknown Source)

at com.attunity.comm.XmsgComm.xMsgThrowTimeoutEx(Unknown Source)

at com.attunity.comm.XmsgComm.treatInterruptedIOException(Unknown Source)

at com.attunity.comm.XmsgComm.xMsgPerformCall(Unknown Source)

at com.attunity.comm.Daemon.GetServer(Unknown Source)

at com.attunity.navapi.SysTdp.getRemoteSysTdp(Unknown Source)

at com.attunity.jdbc.NvConnectionBase.open(Unknown Source)

at com.attunity.jdbc.NvConnectPropertiesBase.openConnection(Unknown Source)

at com.attunity.jdbc.NvDriverCoreBase.connect(Unknown Source)

at com.attunity.jdbc.NvDriverCoreBase.connect(Unknown Source)

at java.sql.DriverManager.getConnection(DriverManager.java:664)

at java.sql.DriverManager.getConnection(DriverManager.java:270)

但是当我第二次(立即)跑到上面时,错误会自动解决并且 sqoop 成功完成。

只有当我第一次运行 sqoop 时,我才会遇到这个问题。

我浏览了一些博客,错误可能与 JDBC 中的连接池有关。

我的背景主要是DATA相关,没有太多JAVA方面的经验。

有人可以帮我找出实际问题和解决方案吗?

提前致谢!!

最佳答案

引用24.1.Sqoop Supported Databases

引用Attunity Driver Configuration

尝试在 sqoop import 命令中使用 --driver 选项指定适当的驱动程序。

下载nvjdbc2.jar并将其放置在 sqoop 文档中根据您的集群指定的适当位置。

要使用的类名:com.attunity.jdbc.NvDriver

虽然 JDBC 是一个兼容层,允许程序通过通用 API 访问许多不同的数据库,但每个数据库使用的 SQL 语言的细微差别可能意味着 Sqoop 无法开箱即用地使用每个数据库,或者某些数据库的使用效率可能很低。

即使 Sqoop 内部支持数据库,您可能仍然需要在客户端的 $SQOOP_HOME/lib 路径中安装数据库供应商的 JDBC 驱动程序。 Sqoop 可以加载来自客户端 $SQOOP_HOME/lib 中任何 jar 的类,并将它们用作其运行的任何 MapReduce 作业的一部分;与旧版本不同,您不再需要在服务器上的 Hadoop 库路径中安装 JDBC jar。

关于java - 检测到 Sqoop 套接字超时 : Read timed out while reading data from Mainframe and insert into Hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59459702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com