(1)使用text格式
sqoop import
--connect jdbc:oracle:thin:@//ip:1521/asmp2 --username --password --query "select * from sbpopt.tt_maintenance_times_correct where \$conditions" --fields-terminated-by '\t' --delete-target-dir --target-dir /user/asmp/hive/asmp/tt_maintenance_times_correct -m 1
匯入到hdfs結果如下:
原本oracle是null的字段,被轉成字串"null",結果我在sql使用
nvl(c.business_correct_times,c.sys_definition_times) 才發現針對 null 無效。。。
(2)只能換成parquet格式
sqoop import
--connect jdbc:oracle:thin:@//ip:1521/asmp2 --username --password --query "select * from sbpopt.tt_maintenance_times_correct where \$conditions" --as-parquetfile --delete-target-dir --target-dir /user/asmp/hive/asmp/tt_maintenance_times_correct -m 1
匯入到hdfs結果如下:
hive建表語句:(字段型別必須和sqoop匯出的檔案保持一致)
drop
table asmp.tt_maintenance_times_correct;
create external table
ifnot
exists asmp.tt_maintenance_times_correct
(id string,
product_code string,
product_name string,
first_billing_date bigint
,last_billing_date bigint
,sale_amount string,
sys_definition_times string,
business_correct_times string,
correct_status string,
correct_date bigint
,correct_people string,
create_by string,
create_date bigint
,update_by string,
update_date bigint
)comment
'asmp臨時表'
stored as parquet
location '/user/asmp/hive/asmp/tt_maintenance_times_correct'
;
如果oracle表中字段中會有換行符,會導致資料存入hive後,條數增多(每個換行符前後拆分成兩行),所以需要特殊字元處理,方法如下:
#對換行等特殊字元的替換成" "
--hive-delims-replacement " "
#對換行等特殊字元刪除
--hive-drop-import-delims
Sqoop匯入資料到HDFS上
flume收集日誌 主動的和被動的 看文件sqoop底層是mr,要執行sqoop要有yarn環境,做大資料平台和關係型資料庫匯入匯出工具,必須要有連線資料庫的驅動 root node1 service mysql start root node1 service mysql status root ...
sqoop匯入匯出
sqoop官方手冊位址 最近在看sqoop有些感想,就寫下來。sqoop是大資料裡面匯入匯出的乙個工具。關於import匯出 可以從mysql匯出到hdfs,hbase,hive,案例如下,這是乙個匯出到hdfs的案例 import connect jdbc mysql username root ...
sqoop 增量匯入
在隨著系統的執行,每天都會產生新的資料,在進行資料匯入的時候,由於之前已經匯入過資料,所以在產生新的資料的時候,就可以直接在之前導過的資料的基礎上繼續匯入資料,沒有必要之前的所有資料都重新匯入一遍 增量匯入資料的使用 以上為增量匯入的引數check column 檢查列,檢查資料庫表中的索引列,一般...