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

pepwfjgg  于 2021-06-03  发布在  Hadoop
关注(0)|答案(7)|浏览(672)

我在本地机器上安装了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

Hive:

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

在完成所有安装之后,我在mysql中创建了一个名为practice\u 1的表,但是当我运行load命令将数据从mysql加载到hdfs时,该命令引发了一个异常:

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

谁能告诉我可能的问题是什么吗。

jyztefdp

jyztefdp1#

你需要'sqoop'类路径中的数据库驱动程序检查这个它有关于'sqoop'的精彩解释
sqoop还有其他选择,比如
例如:--driver com.microsoft.jdbc.sqlserver.sqlserverdriver-libjars=“*jar”
从这里开始
您可以将sqoop与任何其他jdbc兼容的数据库一起使用。首先,为要导入的数据库类型下载适当的jdbc驱动程序,并将.jar文件安装在客户机上的$sqoop\u home/lib目录中(如果您是从rpm或debian包安装的,那么它将是/usr/lib/sqoop/lib。)每个driver.jar文件还有一个特定的驱动程序类,它定义了驱动程序的入口点。例如,mysql的connector/j库有一个驱动程序类com.mysql.jdbc.driver。请参阅特定于数据库供应商的文档以确定主驱动程序类。此类必须作为sqoop的一个参数提供--driver。
您可能对理解连接器和驱动程序之间的区别感兴趣

6qqygrtg

6qqygrtg2#

如果您已经将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
a0x5cqrl

a0x5cqrl3#

另一个避免使用共享库的解决方案是使用hadoop\u类路径将驱动程序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

这个至少适用于sqoop1.4.3-cdh4.4.0

kpbpu008

kpbpu0084#

你需要同意 priveleges 下表:
将marksheet.*上的所有权限授予“root”@“192.168.168.1”,由“root123”标识;
刷新特权;
下面是我成功执行的示例命令:
sqoop import--verbose--以“,”结尾的字段--connectjdbc:mysql://192.168.168.1/test--用户名root--密码root123--表student--配置单元导入--创建配置单元表--配置单元home/home/training/hive--仓库dir/user/hive/warehouse--以“,”结尾的字段--配置单元表studentmysql

whitzsjs

whitzsjs5#

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

mqkwyuun

mqkwyuun6#

这是一个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

在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/

eufgjt7s

eufgjt7s7#

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

相关问题