簡體   English   中英

Sqoop:無法加載mysql驅動程序異常

[英]Sqoop: Could not load mysql driver exception

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

完成所有安裝后,我在mysql中創建了一個名為practice_1的表,但是當我運行load命令將數據從mysql加載到hdfs時,該命令會引發異常:

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

Coud有人請指導我可能出現的問題。

你需要'SQOOP'類路徑中的數據庫驅動程序檢查這個關於'SQOOP'的精彩解釋

SQOOP還有其他選擇

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

這里開始

您可以將Sqoop與任何其他符合JDBC的數據庫一起使用。 首先,為要導入的數據庫類型下載相應的JDBC驅動程序,然后將.jar文件安裝在客戶端計算機上的$ SQOOP_HOME / lib目錄中。 (如果您是從RPM或Debian軟件包安裝的,那么這將是/ usr / lib / sqoop / lib。)每個驅動程序.jar文件還有一個特定的驅動程序類,它定義了驅動程序的入口點。 例如,MySQL的Connector / J庫的驅動程序類為com.mysql.jdbc.Driver。 請參閱數據庫供應商特定的文檔以確定主驅動程序類。 必須使用--driver將此類作為Sqoop的參數提供。

您可能有興趣了解連接器和驅動程序之間的區別這里是文章

另一種避免使用共享庫的解決方案是使用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

您需要將MySql連接器添加到/ usr / lib / sqoop / lib。 默認情況下,MySQL JDBC驅動程序不存在於Sqoop發行版中,以確保默認發行版完全符合Apache許可證。 希望這可以幫助...!!!

如果您已將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

將'mysql-connector-java-5.1.41-bin.jar'復制到sqoop / lib文件夾並執行sqoop import語句

這是一個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/

您需要為表格授予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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM