大數據遷移利器StreamSet教學-SqlServer同步到Hive

業務背景

公司上大數據,要把sqlserver裏的業務數據實時同步到大數據平臺上。幾天調研後選擇StreamSet作爲ETL工具。技術選型的理由主要有幾點:

  1. sqlserver的坑太深,網上找了很多工具對sqlserver的支持力度都不是很大(微軟全家桶的要哭了~)
  2. 自己開發ETL程序耗時太長,同時配套的ETL metrics工具也需要配備,勞民傷財。感覺有時間開發不如把精力放在業務數據研究和指標計算上。
  3. sqlserver支持兩種實時同步機制:CDC和Change Tracking,CDC使用起來比較重 果斷放棄。

streamset安裝

我用的是CDH6.2版本集成化了StreamSet,方便管理。

  1. streamset下載地址:https://archives.streamsets.com/index.html
    我下載的是3.14.0版本
  2. 配置本地yum源
    將下載的三劍客文件放在一個新建文件夾中,並移動到/var/www/html 目錄中,做離線包的下載地址,用瀏覽器訪問如下,表示成功
  3. 配置CSD
    將STREAMSETS-3.1.4.0.jar拷貝到/opt/cloudera/csd,並更改權限,然後重啓cloudera-scm-server服務,沒有csd文件夾就自己新建一個。

4.下載分發激活Parcel包
傳送門:https://cloud.tencent.com/developer/article/1078852

sqlserver之Change Tracking

sqlserver上開啓Change Tracking,這裏要做到表級別Change Tracking

  1. 開啓庫級別Change Tracking
ALTER DATABASE 數據庫名 SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS,AUTO_CLEANUP = ON)
  1. 開啓表級別Change Tracking
ALTER TABLE [dbo].[Department] ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = ON)

Streamset之sqlserver配置

  1. 右上角點擊All Stages找到SQLxxx
  2. 配置分析
    JDBC鏈接
    要下載一個MSSQL驅動
    正則表示需要同步的表和不需要同步的表
    數據庫賬號密碼
    jdbc包的驅動類

StreamSet之Hive配置

配置Hive要使用HiveMeData和HiveMeStore兩個插件
重要參數詳解:

  1. Database Expression:Hive數據庫選擇,不寫則是默認庫
  2. Partition Configuration:設置Hive分區的參數,這裏可以設置成多級分區,只要選擇“+”就行,其中Partition Value Expression是獲取分區號數據的表達式,可以自己生成也可以根據表字段裏的數據定義分區。因爲我們數據原因,我這裏表達式寫的很蛋疼~有關表達式的寫法建議大家直接去擼下官網(PS:Streamset的官網文檔還是很不錯的,個人感覺比flink強多了!!)。
    官網functions傳送門:https://streamsets.com/documentation/datacollector/latest/help/datacollector/UserGuide/Expression_Language/Functions.html#concept_lhz_pyp_1r
    HiveMeData

StreamSet之HDFS配置

重要參數詳解:
File System URI:hdfs的URI連接
Configuration Files Directory:hdfs的config文件位置,需要加載core-site.xml
Files Prefix:生成hdfs的文件前綴,建議大家改一下,不然生成的文件名巨長~
Files Suffix:生成hdfs的文件後綴,爲用了txt格式,記住不用加點
Directory in Header:打鉤後會直接落盤到hive的/user/hive/warehouse/中,如果不打鉤,則可以自定義落盤路徑
Compression Codec :選擇壓縮算法
Use Roll Attribute :回滾機制
Connection連接
在這裏插入圖片描述

StreamSet之踩坑實戰

處理數據同步過程中避免不了加減字段,清洗數據等問題,業務越複雜的OLTP架構中數據遷移越是麻煩,在學習使用StreamSet中,建議大家先去擼清楚官網。我自己在學習使用中總結兩個方面感覺很有必要:

  1. 函數表達式,這裏的坑很多,要想使用數據,調用數據都要通過表達式來完成
  2. Field開頭的插件大多是對數據做處理加工的,大家使用前一定要對Field開頭的插件挨個看一遍。我自己就使用了Field Type Converter(字段值類型轉換)、Expression Evaluator(表達式執行器)

在這裏插入圖片描述專注大數據生態、Spark/Flink、Java/Scala仔
架構未滿、Coding至上、一直在路上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章