使用mysql的sqoop导入问题

时间:2015-03-20 08:38:33

标签: hadoop hive hbase sqoop

我有一个基于cdh5的hadoop ha设置。我试图使用sqoop从mysql导入表失败并出现以下错误。

15/03/20 12:47:53 ERROR manager.SqlManager: Error reading from database: java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@33573e93 is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.
java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@33573e93 is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.

我使用了以下命令..

sqoop import --connect jdbc:mysql://<mysql hostname>:3306/haddata --username root --password password --table authors --hive-import

我的mysql服务器版本是5.1.73-3。并使用了mysql-connector-java

的5.1.34和5.1.17版本
sqoop version is 1.4.5-cdh5.3.2

请告诉我任何建议/意见。

9 个答案:

答案 0 :(得分:27)

尝试在导入命令中包含选项--driver com.mysql.jdbc.Driver。

答案 1 :(得分:9)

尝试使用以下修改后的命令,该命令可以满足您的目的

sqoop import --connect jdbc:mysql://<mysql hostname>:3306/haddata --driver com.mysql.jdbc.Driver --username root --password password --table authors --hive-import

答案 2 :(得分:6)

follow this link

在sqoop命令中包含驱动程序参数--driver com.mysql.jdbc.Driver

sqoop import --connect jdbc:mysql://<mysql hostname>:3306/<db name> --username **** --password **** --table <table name> --hive-import --driver com.mysql.jdbc.Driver

--driver参数强制sqoop使用在sqoop机器上为mysql db安装的最新mysql-connector-java.jar

答案 3 :(得分:2)

尝试使用mysql-connector-java-5.1.31.jar,它与sqoop 1.4.5兼容。

mysql-connector-java-5.1.17.jar驱动程序不能与sqoop 1.4.5一起使用。

参考:

https://issues.apache.org/jira/browse/SQOOP-1400

答案 4 :(得分:0)

如果你在$ HADOOP_HOME / bin文件夹中有com.mysql.jdbc_5.1.5.jar或任何版本的com.mysql.jdbc_5.X.X.jar文件,那么删除它,并执行你的SQOOP查询。

答案 5 :(得分:0)

在导入命令中包含选项--driver com.mysql.jdbc.Driver为我工作。

答案 6 :(得分:0)

Sqoop未附带第三方JDBC驱动程序。您必须单独下载它们并将它们保存到服务器上的/ var / lib / sqoop /目录中。

注意: JDBC驱动程序只需安装在运行Sqoop的机器上。您无需在Hadoop集群中的所有主机上安装它们。

您可以从此处下载驱动程序:https://dev.mysql.com/downloads/connector/j/5.1.html

答案 7 :(得分:0)

尝试完整的命令,如下所示。

  

sqoop import --connect“jdbc:mysql:// localhost:3306 / books”   --username = root --password = root --table authors --as-textfile --target -dir = / datasqoop / authors_db --columns“id,name,email”--split-by id --driver com。 mysql.jdbc.Driver

这将解决您的问题。

答案 8 :(得分:0)

找到sqoop中使用的jar位置,在我的例子中,它指向链接/usr/share/java/mysql-connector-java.jar

所以当我检查链接/usr/share/java/mysql-connector-java.jar时,它指向mysql-connector-java- 5.1.17 .jar

  

/usr/share/java/mysql-connector-java.jar - &gt; MySQL的连接器的Java-5.1.17.jar

由于5.1.17存在此问题,请尝试 5.1.37或更高版本

  

unlink /usr/share/java/mysql-connector-java.jar

     

ln -s /usr/share/java/mysql-connector-java.jar /usr/share/java/mysql-connector-java-5.1.37.jar