ローカルマシンに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
誰でも、考えられる問題を教えてください。
'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への引数として提供する必要があります。
コネクタとドライバの違いを理解することに興味があるかもしれません ここ は記事です
共有ライブラリの使用を回避する別の解決策は、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で動作します
MySqlコネクタを/ usr/lib/sqoop/libに追加する必要があります。デフォルトのディストリビューションがApacheライセンスに完全に準拠していることを確認するために、MySQLJDBCドライバーはデフォルトではSqoopディストリビューションに存在しません。お役に立てれば...!!!
これは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/
'mysql-connector-Java-5.1.41-bin.jar'をsqoop/libフォルダーにコピーし、sqoopインポートステートメントを実行します
Mysqlドライバーをsqooplibフォルダーにコピーした場合。それは確かに機能します。 sqoopコマンドが正しいことを確認してください
/home/hduser/sqoop/bin/sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root -–table practice_1 -m 1