Sqoop job

開著拖拉機回家發表於2020-09-30

目錄

一、需求和方案總述

二、Sqoop Job 

1. Sqoop job 使用示例

 2. Sqoop 增量匯入


一、需求和方案總述

  • 需求:將MySQL 的83張表先全量 匯入 Hive 數倉,然後增量的匯入新增的資料到 Hive 數倉  ods 層。
  • 解決方案:建立臨時表,將每張表的資訊插入到臨時表,將 MySQL 臨時表資訊匯出到本地,然後建立 83 個Sqoop job, 最後執行 Sqoop job就可以實現 83 張表的增量匯入,前提就是83 張表中都有 時間欄位,Sqoop 監控這個時間欄位就可以。

二、Sqoop Job 

1. Sqoop job 使用示例

1.查詢 job 列表

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

2.刪除 job

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

3.建立測試 job

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.執行 job

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

列印的日誌 

5.執行結果檢視

為什麼要建立 Sqoop job , 因為 job 可以在  /root/.sqoop/metastore.db.script   儲存監控的最近的 時間戳欄位,如果不使用 Sqoop job 儲存,預設是會如下的效果 ,拿到 給的初始的值和查出的最大值更新插入

 

6.MySQL中 新插入兩條資料

7.日誌中 顯示查詢的方式

8.查詢 hive 表中的資料

 2. Sqoop 增量匯入

注意:Sqoop 不支援 mysql轉hive時使用 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

 

還有一點: sqoop job  密碼 儲存 用引數

--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

 

 

相關文章