web-dev-qa-db-ja.com

Sqoop:mysqlドライバーの例外を読み込めませんでした

ローカルマシンに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

誰でも、考えられる問題を教えてください。

5
Sam

'SQOOP'クラスパスチェックにデータベースドライバが必要です this 'SQOOP'について素晴らしい説明があります

SQOOPには次のような他のオプションがあります

例:-driver com.Microsoft.jdbc.sqlserver.SQLServerDriver -libjars = "。* jar"

から ここ

Sqoopは、他のJDBC準拠のデータベースで使用できます。まず、インポートするデータベースのタイプに適したJDBCドライバーをダウンロードし、クライアントマシンの$ SQOOP_HOME/libディレクトリに.jarファイルをインストールします。 (RPMまたはDebianパッケージからインストールした場合、これは/ usr/lib/sqoop/libになります。)各ドライバー.jarファイルには、ドライバーへのエントリポイントを定義する特定のドライバークラスもあります。たとえば、MySQLのConnector/Jライブラリにはcom.mysql.jdbc.Driverのドライバクラスがあります。メインのドライバクラスを決定するには、データベースベンダー固有のドキュメントを参照してください。このクラスは、-driverを使用してSqoopへの引数として提供する必要があります。

コネクタとドライバの違いを理解することに興味があるかもしれません ここ は記事です

15
malatesh

共有ライブラリの使用を回避する別の解決策は、HADOOP_CLASSPATHを使用してsqoopのクラスパスにドライバーjarを追加することです。 -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で動作します

6
selle

MySqlコネクタを/ usr/lib/sqoop/libに追加する必要があります。デフォルトのディストリビューションがApacheライセンスに完全に準拠していることを確認するために、MySQLJDBCドライバーはデフォルトではSqoopディストリビューションに存在しません。お役に立てれば...!!!

3
Mukesh S

これはOozieShareLibの問題です。以下のスクリプトは私の場合に機能します。

シェルで

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/

0
Henrique Dias

'mysql-connector-Java-5.1.41-bin.jar'をsqoop/libフォルダーにコピーし、sqoopインポートステートメントを実行します

0
y durga prasad

Mysqlドライバーをsqooplibフォルダーにコピーした場合。それは確かに機能します。 sqoopコマンドが正しいことを確認してください

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