Sqoopジョブ(Sqoopジョブで使用される80テーブルの増分同期スキーム)

目次

1.ニーズと計画の概要

2、Sqoopジョブ 

1.Sqoopジョブの使用例

 2.Sqoopインクリメンタルインポート


1.ニーズと計画の概要

  • 要件:最初に83個のMySQLテーブルすべてをHiveデータウェアハウスにインポートしてから、新しいデータをHiveデータウェアハウスのodsレイヤーに段階的にインポートします。
  • 解決策:一時テーブルを作成し、各テーブルの情報を一時テーブルに挿入し、MySQL一時テーブル情報をローカルにエクスポートしてから83 Sqoopジョブを作成し、最後にSqoopジョブを実行して83テーブルの増分インポートを実現します。前提つまり、83個のテーブルすべてに時間フィールドがあり、Sqoopはこの時間フィールドを監視できます。

2、Sqoopジョブ 

1.Sqoopジョブの使用例

1.ジョブリストのクエリ

[root@hdp301 ~]# sqoop job --list

2.ジョブを削除します

[root@hdp301 ~]# sqoop job --delete kangll

3.テストジョブを作成します

sqoop job --create kangll -- import --connect jdbc:mysql://192.168.2.226:3306/yx \
--table stat_url_count \
--username root \
--password winner@001 -m 1 \
--hive-import \
--hive-table dwd_url_count \
--external-table-dir /yax/dwd/sfyp_test.db/dwd_url_count \
--incremental append \
--check-column last_timestamp \
--last-value '2015-11-30 16:59:43.1' \
--fields-terminated-by "\001"

4.ジョブを実行します

[root@hdp301 ~]# sqoop job -exec kangll

印刷されたログ 

5.実行結果を表示する

Sqoopジョブを作成する理由。ジョブはモニタリングの最新のタイムスタンプフィールドを/root/.sqoop/metastore.db.scriptに保存できるため、Sqoopジョブを使用して保存しない場合、デフォルトは次のようになります。見つかった最初の指定された値と最大値を取得します

 

6.2つの新しいデータをMySQLに挿入します

7.ログにクエリを表示する方法

8.ハイブテーブルのデータをクエリします

 2.Sqoopインクリメンタルインポート

注:Sqoopは、mysqlをハイブに変換するときにlastmodifiedモードを使用した増分インポートをサポートしていません

nohup sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect ${driver} \
--username ${dbUsername} \
--password ${dbPasswd} \
--table "${tableName}" \
--hive-import \
--hive-database data_exchange \
--hive-table "${tableName}" \
--hive-partition-key  "dt" \
--hive-partition-value "${date}" \
--fields-terminated-by '\001' \
--external-table-dir "/winhadoop/ods/data_exchange.db/${tableName}" \
--check-column jhpt_update_time \
--incremental append \
--last-value '1990-02-02 12:21:21' \
--target-dir "/sqoop/data/append/" \
--m 1 \
--null-string '\\N' \
--null-non-string '\\N' \
--mapreduce-job-name data_exchange_${tableName} >> ${sfyp_log}/ods_data_exchange.${date}.log

 

もう1つのポイント:Sqoopジョブのパスワード保存パラメーター

--password-file /input/sqoop/pwd/sqoopPWD.pwd

パスワードを保存するファイルを作成し、HDFSにアップロードします

echo -n "hadoop" > sqoopPWD.pwd
hdfs dfs  -mkdir -p /input/sqoop/pwd/sqoopPWD.pwd
​echo -n "hadoop" > sqoopPWD.pwd
hdfs dfs  -mkdir -p /input/sqoop/pwd/sqoopPWD.pwd
hdfs dfs -put sqoopPWD.pwd /input/sqoop/pwd
hdfs dfs -chmod 400 /input/sqoop/pwd/sqoopPWD.pwd

 

 

おすすめ

転載: blog.csdn.net/qq_35995514/article/details/108471044