Sqoop匯入HDFS格式問題

2021-10-09 18:41:11 字數 1960 閱讀 2404

(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 檢查列,檢查資料庫表中的索引列,一般...