大数据迁移利器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至上、一直在路上

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