2017-05-02 15 views
0

CLIで次のSQOOPコマンドを完全に実行できます。 SQOOP経由でOOZIEでMS SQL Serverテーブルを表示する

sqoop list-tables 
--connect 'jdbc:sqlserver://xx.xx.xx.xx\MSSQLSERVER2012:1433;username=usr;password=xxx;database=db' 
--connection-manager org.apache.sqoop.manager.SQLServerManager 
--driver com.microsoft.sqlserver.jdbc.SQLServerDriver 
-- --schema schma 

しかし

2055 [メイン] ERROR org.apache.sqoop.manager.CatalogQueryManager OOZIE(HUE)で同じことを試しながら、エラーを取得 - は、テーブルのjava.sqlをリストに失敗しました。

-

のSQLException: ';ユーザ名= USR;パスワード= xxxはデータベース=デシベル1433:のSQLServer://xx.xx.xx.xx \ MSSQLSERVER2012 JDBC' いいえ、適切なドライバがため を認めませんでした

2057 [メイン] ERROR org.apache.sqoop.Sqoop - Sqoopを実行しているガット例外:java.lang.RuntimeException:ます。java.sql.SQLException:のSQLServer:// X-X「JDBCが見つかりません適し ドライバー。 xx.xx.xx \ MSSQLSERVER2012:1433;ユーザー名= USR;パスワード= XXX;データベース=デシベル」

我々はそれがoozieで動作するように取得できますか?

+0

workflow.xmlを提供できますか? –

+1

jdbc jarファイルをHDFSのoozieの共有フォルダに入れましたか?この投稿はhttp://stackoverflow.com/questions/15978156/oozie-sqoop-jdbc-driver-jar-location?rq=1の可能な複製です – Pushkr

答えて

0

これはCDH 5.11とHue Workflow Editorを使用してOozie> Sqoop1ワークフローを作成してくれましたが、UserNameとPasswordの引数をハードコードする必要があります...スクリーンショット以下に含まれています。ここで

は、ステップバイステップです:

  1. オープン色合い>ワークフローエディタ
  2. にSqoop 1アクションが「ここにあなたの行動をドロップ
  3. ドラッグ新しいワークフローを作成します。 "灰色のボックス。
  4. デフォルトのSqoopコマンドボックスを無視し、代わりにSqoopコマンドボックスの下の引数の右側に+を押して、新しい引数を追加します。
  5. 最初の引数として二重引用符のない「インポート」を追加します。
  6. Sqoopコマンドボックスの内容全体を削除するには、それを空にする必要があります。
  7. "--connect"の値を持つ新しい引数を二重引用符ではなく追加します。
  8. の値を持つ新しい引数の追加「のjdbc:のSQLServer:// YourServerNameHereを、データベース= YourDatabaseNameHere」
  9. 「--username」の値を持つ新しい引数を追加した値を持つ新しい引数を追加します。 「YourSQLServerNamedUserNameHere」
  10. の選択*」の値を持つ新しい引数を追加「--query」
  11. の値を持つ新しい引数を追加
  12. を「--password」の値を持つ新しい引数を追加します。 OptionalDBNameHere.SchemaNameここから。$条件
  13. 『--target-DIR『の値を持つ新しい引数を追加
  14. 』--delete-対象-dirを」
  15. は、の値を持つ新しい引数を追加』 TableNameHereは、新しい引数を追加します。/hdfs/NewFolderForThisTableHere "の値を持つ" hdfs:// FDQServerName:PortNumber8020IsDefault/User/full/path/to/where/you/want/the/csv/file /再作成したあなたはsqoopジョブを実行するたびに。
  16. は「1」
の値を持つ新しい引数を追加
  • 「NUM-マッパー」の値を持つ新しい引数を追加します。

    重要:

    A.「どこ$条件は、」それはそれなしで実行されません項目13のSQLのSELECT文の最後に持っていることが重要です。

    B.これは、SQL Server名前付きユーザーアカウントを使用して、DBサーバーデータベースとテーブルにアクセスし、Sqoopにします。

    B.名前付きユーザーにデフォルトスキーマが "dbo"に設定されていない場合、またはテーブルのスキーマがデータベースとユーザーのデフォルトスキーマでない場合は、このような引数を入力する必要があります。

    C. SQL Server JDBCドライバがインストールに正しく配置されています。特定のバージョンのClouderaの場合、場所は "/opt/cloudera/parcels/CDH-5.11.0-1.cdh5.11.0.p0.34/lib/sqoop/lib/sqljdbc41.jar"ですが、それは "/ var/lib/oozie"または "/var/lib/sqoop" ...のいずれかであり、どちらも単独では動作しません。

    D.私は、引数としてハードコードされたユーザー名とパスワードをjob.propertiesファイルの値で置き換えることに成功しませんでした。私はそれが可能だと信じていますが、私はそれを行う方法を明確に示すことができる誰かを見つけることができませんでしたし、ブルートフォースの試行錯誤の日は失敗しました。

    ここでは、これが完了したときの外観を示すスクリーンショットです。 SqoopCommandAsArguments SqoopCommandAsArgumentsSuccess

  • 関連する問題