Sqoop:无法加载mysql驱动程序异常

问题描述 投票:5回答:7

我在本地机器上安装了Sqoop。以下是配置信息。

Bash.bashrc:

export HADOOP_HOME=/home/hduser/hadoop
export HBASE_HOME=/home/hduser/hbase
export HIVE_HOME=/home/hduser/hive
export HCAT_HOME=/home/hduser/hive/hcatalog
export SQOOP_HOME=/home/hduser/sqoop

export PATH=$PATH:$HIVE_HOME/bin
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HBASE_HOME/bin
export PATH=$PATH:$SQOOP_HOME/bin
export PATH=$PATH:$HCAT_HOME/bin

Hadoop的:

Version: Hadoop 1.0.3

蜂巢:

Version: hive 0.11.0 

Mysql连接器驱动程序

version: mysql-connector-java-5.1.29

"The driver is copied to the lib folder of sqoop"

Sqoop:

version: sqoop 1.4.4

完成所有安装后,我在名为practice_1的mysql中创建了一个表,但是当我运行load命令将数据从mysql加载到hdfs时,该命令会抛出异常:

ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not     load db driver class: com.mysql.jdbc.Driver

谁能指导我可能出现的问题。

mysql hadoop hive sqoop
7个回答
14
投票

你需要'SQOOP'类路径检查中的数据库驱动程序this它对'SQOOP'有很好的解释

SQOOP还有其他选择

例如: - driver com.microsoft.jdbc.sqlserver.SQLServerDriver -libjars =“。* jar”

来自here

您可以将Sqoop与任何其他符合JDBC的数据库一起使用。首先,为要导入的数据库类型下载相应的JDBC驱动程序,然后将.jar文件安装在客户端计算机上的$ SQOOP_HOME / lib目录中。 (如果您是从RPM或Debian软件包安装的,那么这将是/ usr / lib / sqoop / lib。)每个驱动程序.jar文件还有一个特定的驱动程序类,它定义了驱动程序的入口点。例如,MySQL的Connector / J库的驱动程序类为com.mysql.jdbc.Driver。请参阅数据库供应商特定的文档以确定主驱动程序类。必须使用--driver将此类作为Sqoop的参数提供。

您可能有兴趣了解连接器和驱动程序here之间的区别是文章


6
投票

另一种避免使用共享库的解决方案是使用HADOOP_CLASSPATH将驱动程序jar添加到sqoop的类路径中。我没有-libjars选项可以工作。此解决方案也适用于使用kerberos的安全集群。

HADOOP_CLASSPATH=/use.case/lib/postgresql-9.2-1003-jdbc4.jar
sqoop export --connect jdbc:postgresql://db:5432/user \
  --driver org.postgresql.Driver \
  --connection-manager org.apache.sqoop.manager.GenericJdbcManager \
  --username user \
  -P \
  --export-dir /user/hive/warehouse/db1/table1 \
  --table table2

这个至少适用于sqoop 1.4.3-cdh4.4.0


2
投票

您需要将MySql连接器添加到/ usr / lib / sqoop / lib。默认情况下,MySQL JDBC驱动程序不存在于Sqoop发行版中,以确保默认发行版完全符合Apache许可证。希望这可以帮助...!!!


0
投票

如果您已将mysql驱动程序复制到sqoop lib文件夹。它肯定会起作用。确保sqoop命令正确

/home/hduser/sqoop/bin/sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root -–table practice_1 -m 1

0
投票

将'mysql-connector-java-5.1.41-bin.jar'复制到sqoop / lib文件夹并执行sqoop import语句


0
投票

这是一个Oozie ShareLib问题。以下脚本适用于我:

在壳牌

sudo -u hdfs hadoop fs -chown cloudera:cloudera /user/oozie/share/lib/lib_20170719053712/sqoop
hdfs dfs -put /var/lib/sqoop/mysql-connector-java.jar /user/oozie/share/lib/lib_20170719053712/sqoop
sudo -u hdfs hadoop fs -chown oozie:oozie /user/oozie/share/lib/lib_20170719053712/sqoop

oozie admin -oozie http://localhost:11000/oozie -sharelibupdate
oozie admin -oozie http://localhost:11000/oozie -shareliblist sqoop

在Hue Sqoop客户端

sqoop list-tables --connect jdbc:mysql://localhost/retail_db --username root --password cloudera

更多细节:

https://blog.cloudera.com/blog/2014/05/how-to-use-the-sharelib-in-apache-oozie-cdh-5/


-3
投票

您需要将priveleges授予表格,如下所示:

授予标记表上的所有权限。*至'root'@'192.168.168.1'由'root123'标识;

冲洗特权;

这是我成功执行的示例命令:

sqoop import --verbose --fields-terminated-by',' - connect jdbc:mysql://192.168.168.1/test --username root --password root123 --table student --hive-import --create- hive-table --hive-home / home / training / hive --warehouse-dir / user / hive / warehouse --fields-terminated-by','--hive-table studentmysql

© www.soinside.com 2019 - 2024. All rights reserved.