ogg抽資料到hdfs問題(彙總)

2021-10-06 07:15:11 字數 1916 閱讀 4428

新專案使用ogg抽資料按照年月日+小時的形式儲存到hdfs,由於ogg資料是保留修改前資料和修改後資料的,所以採用json格式儲存文字

,"after"

:}

問題一:由於資料沒有主鍵,必須配置row_id

tokens(dbrowid= @getenv(

'record','rowid'

));

問題二:json格式資料中間沒有換行符

gg.handler.name.format=json

gg.handler.name.format.jsondelimiter=cdata[\n]

問題三:新增和修改是全量字段,刪除僅有id

nocompressdeletes 引數可以記錄所有列刪除值
最終文字格式:

,"before":,

"after"

:}

然後使用sqoop把全量資料表按照rowid格式抽取到hdfs:

sqoop import \

--connect jdbc:oracle:thin:@//ip:1521/db \

--username u \

--password p \

--query "select rowidtochar(t.rowid) as row_id,t.* from sbpopt.tt_test t where \$conditions " \

--delete-target-dir \

--target-dir /user/asmp/hive/ogg/tt_test \

--split-by bill_no \

--as-parquetfile \

-m 16

實際使用案例:

sqoop import

"-dorg.apache.sqoop.splitter.allow_text_splitter=true" --connect jdbc:oracle:thin:@ --username test --password test --delete-target-dir --target-dir /user/asmp/hive/asmp/tt_repair_part --query "select rowidtochar(t.rowid) as row_id,t.* from sbpopt.tt_repair_part t where \$conditions" --as-parquetfile --split-by "to_char(part_date,'yyyy')" -m 8

注意事項:

1)增加/修改/刪除 都要全列字段

(2)增加row_id

(3)欄位json格式

(4)一行與一行之間有換行符

(5)日期生成資料夾,每小時乙個檔案

(6)hdfs和kafka中資料格式一致

(7)kafka中每張表對應乙個topic

(8)kafka環境是否有kerberos認證

總計配置了五個程序分別是:

生產hdfs、生產kafka、測試hdfs、測試kafka1和kafka2

之後就可以用spark讀資料,解析修改資料&合併到全量資料~

技術要點:

(1)處理過程如何針對不同庫表統一方法,通過引數配置的方式

(2)json欄位順序如何和hive讀取順序保持一致

OGG遇到相關問題彙總

ogg初始化載入資料時遇到的問題 1.target端拒絕source端訪問 2016 12 13 14 31 03 info ogg 00963 oracle goldengate manager for oracle,mgr.prm command received from extract on...

ES資料備份到HDFS

使用hdfs進行快照備份,依賴於外掛程式 hadoop hdfs repository plugin 離線http安裝 elasticsearch bin elasticsearch plugin install 安裝完成後,重啟集群所有節點 建立快照 put snapshot my backup ...

Sqoop匯入資料到HDFS上

flume收集日誌 主動的和被動的 看文件sqoop底層是mr,要執行sqoop要有yarn環境,做大資料平台和關係型資料庫匯入匯出工具,必須要有連線資料庫的驅動 root node1 service mysql start root node1 service mysql status root ...