2014-03-30 26 views
4

我在本地機器上安裝了Sqoop。以下是配置信息。Sqoop:無法加載mysql驅動程序異常

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一個表,但是當我運行加載命令從MySQL數據加載到HDFS命令拋出異常:

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

有人請指導我什麼可能是可能的問題。

+0

能否請您提供sqoop你正在運行的命令。 ? –

+0

你在這裏:我提供的Scoop命令是:::/home/hduser/sqoop/bin/sqoop import -connect'jdbc:mysql:// localhost:3306/test'--username root --password root - 表'practice_1' - m 1; – Sam

回答

7

您需要在 'SQOOP' 類路徑數據庫驅動程序檢查this 它有關於 'SQOOP'

SQOOP精彩講解還有其他選項,如

例如:--driver com.microsoft.jdbc .sqlserver.SQLServerDriver -libjars = 「*罐子」

here

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

你可能有興趣在瞭解連接器和驅動器here之間的區別是文章

2

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

-3

您需要授予priveleges到表如下:

格蘭特marksheet所有特權* 'root'@192.168.168。1' 'root123'標識;

沖洗權限;

這裏是我已成功執行的示例命令:

sqoop進口--verbose --fields封端-由 '' --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

5

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

+1

+1我認爲這比將jdbc jar拷貝到任何lib目錄更清潔,如果你沒有對這些lib目錄的寫訪問權限,這可能是唯一的選擇。 – tep

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語句

相關問題