工作中經常使用sqoop匯入資料到hdfs上,由於oracle表中有些字段包括/t/r/n等特殊字元,為了資料不出現錯位,解析失敗等情況,我們採用parquet壓縮格式(其中時間存為 "yyyy-mm-dd hh24:mi:ss.ff"格式)
sqoop import \
--connect jdbc:oracle:thin:@//ip:1521/asmp2 \
--username \
--password \
--query "select rowidtochar(rowid) as row_id,t.id,t.content_code,t.content_name,t.price_type,t.oli_type,t.content_status,t.creat_by,to_char(t.creat_time,'yyyy-mm-dd hh24:mi:ss.ff') creat_time from sbpopt.tt_pd_service_sontent t where \$conditions" \
--delete-target-dir \
--target-dir /user/hive/warehouse/tt_pd_service_sontent \
--split-by id \
--as-parquetfile \
-m 1
如果分割槽欄位是日期型別還需要特殊處理"to_char(creat_time,『yyyy』)"
sqoop import
"-dorg.apache.sqoop.splitter.allow_text_splitter=true"\
--connect jdbc:oracle:thin:@//ip:1521/asmp2 \
--username \
--password \
--query "select rowidtochar(rowid) as row_id,t.id,t.content_code,t.content_name,t.price_type,t.oli_type,t.content_status,t.creat_by,to_char(t.creat_time,'yyyy-mm-dd hh24:mi:ss.ff') creat_time from sbpopt.tt_pd_service_sontent t where \$conditions" \
--delete-target-dir \
--target-dir /user/hive/warehouse/tt_pd_service_sontent \
--split-by to_number(to_char(creat_time,'yyyy'
)) \
--as-parquetfile \
-m 8
針對特殊字元進行處理,比如null
sqoop export
--connect jdbc:oracle:thin:@//ip:1521/svwot
--username
--password
--table dacu.tt_test
--input-fields-terminated-by '\t'
--export-dir /user/asmp/hive/test
--input-null-string '\\n'
--input-null-non-string '\\n'
--columns=rssc_code,province_code,city_code,sst_code,date_ym,series_code,model_code,car_number_year,car_number_month,create_date
-m 1
parquet儲存格式的hive表,匯入到oracle
sqoop export
--connect jdbc:oracle:thin:@//ip:1521/svwot
--username
--password
--table dacu.tt_test
sqoop export
--connect jdbc:oracle:thin:@//ip:1521/svwot
--username
--password
--table dacu.tt_test
--input-fields-terminated-by '\t'
--export-dir /user/asmp/hive/test_table/partition_date=2020
--input-null-string '\\n'
--input-null-non-string '\\n'
--columns=rssc_code,province_code,city_code,sst_code,date_ym,series_code,model_code,car_number_year,car_number_month,create_date
-m 1
注意事項:
生產環境中存在,sqoop匯入資料識別不了(結果為null)的情況,需要專門監控系統,檢測檔案是否生成,數量是否一致,內容是否為null(也可以從應用端檢測是否生成結果,如果持續幾天結果都是空則可以判斷是源端資料表出現問題)
sqoop常用命令
使用 1 mysql匯入資料到hdfs 1.1 sqoop import connect jdbc mysql username root password 123456 table test user target dir sqoop test user m 2 fields terminated...
sqoop常用命令
命令 1 export 將hadoop資料檔案匯入到資料庫中 2 import 將資料匯出到hadoop檔案系統中 引數解釋 connect 資料庫連線命令 username 資料庫使用者名稱 password 資料庫使用者密碼 export dir 匯入的hadoop檔案 由hadoop匯入到資料...
Sqoop 常用命令總結
sqoop幫助匯入 用法 sqoop import generic args tool args 共同論點 connect 指定jdbc連線字串 connect manager 指定要使用的連線管理器類 driver 手動指定要使用的jdbc驅動程式類 hadoop mapred home 覆蓋 h...