2014.07.19この記事は約3分で読めます。RDMBSからHDFSヘ一部のテーブルをインポートする必要があり、CLIベースのsqoop1.xを触っていたのでメモする。processsqoopコマンドを実行すると、hadoopコマンドをorg.apache.sqoop.Sqoopとsqoopコマンドに渡される引数をもとに実行される。sqoop.tool.pluginsで指定されるクラスがロードされる。引数で指定されたサブコマンドから実行するToolを決定し、ToolクラスをSqoopクラスでラッブし、Toolを実行する。importでは、ImportToolが実行されるといった具合。processにより、ImportToolクラスのrunメソッドが実行される。allTablesフラグがtrueの時は(import-all-tablesサブコマンドの時)、エラーメッセージをリターンコード1で戻る。JDBCドライバーの初期化を行なう。SqoopRecordクラスを継承する取り込み対象のテーブルクラスを含むコンパイル済みjarファイルがなければ(--jar-fileで指定されるjar)、コード生成プロセスが実行され、Importに使用されるjarファイルが作成される(--bindirで指定されるパス)。incrementalモード指定であれば、incrementalモードが実行される。--delete-target-dirオプション指定があれば、ジョブの出力用ディレクトリを削除する。--tableオプション指定があればimportTableメソッドが、なければimportQueryメソッドが呼ばれる。incrementalモードの場合は、import時の状態を保存する。Splitsqoopは、MapReduceを使ってRDMBSからテーブルデータをインポートする。mapperの数は、--num-mappersオプションで指定可能となっている。このオプションを指定しなかった場合は、デフォルトで4つのmapperが指定されている。(Reduceは0)--split-byオプションの指定がない場合は、テーブルのメタ情報からプライマリーKey指定のカラムを取得し利用する。複合Keyになっている場合は、おそらくソースを見る限り、リストで取得したKeyの最初の値を使う。データの分割には、--boudary-queryオプションが指定されていなければ、以下のSQLが実行される。t1その後、カラムのデータタイプによって適切なSplitterが選択され、mapperの数で適切に分割される(各種Splitterのsplitメソッド参照)。Compilesqoopは、--bindirオプションで指定されるパスにソースを生成しコンパイルしてjarファイルを生成する。その後、--outdirオプションで指定されるパスにソースをmoveする。両者が同じパスであった場合、デバッグレベルで、renameできない旨のメッセージが出力される。--jar-fileオプションで、適切にjarファイルを指定すると、コンパイルプロセスをスキップすることができる。テーブル構造に変更がない場合は、スキップすることで処理を短縮できる。通常、テーブルに対し生成されるJavaのクラス名は、--tableオプションで指定された名前となる。--class-nameオプションを指定することで、指定の名前のクラスを生成することができる。--class-nameや--tableオプションなしで、--queryオプションで指定した場合は、QueryResultという名前になる。thriftRBHiveクライアントを使ってHiveServer2経由でクエリを実行しようとしたところ,上手くいかずハマってしまった。以下のようなコードを実行しようとしたところ,エラーで実行できない。HAしてから,以下のWARNメッセージがStandbyNameNodeのログに定期的に出力される。結構な頻度で書き込まれ,また診断のログの方にも上がってくるので何とか抑制したい。directoryimpalaでクエリを実行すると,以下のようなエラーが出ることがある。クエリはエラーになる。以下のcommunityサイトで質問されている方がいた。reflect(strin...hadoopImpalaのmetadataの更新fluentdでHDFSへ書き込んだログをImpalaですぐに実行したい。StateStoreの構成で試験的に稼働させている。コメントをキャンセルメールアドレスが公開されることはありません。»タイトルとURLをコピーしました。