Streamsets
这段时间在用streamsets组件,有些地方还是掉进坑里了,记录一下
芦苇_
人是有思想的芦苇 最近忙于将这几年的有道云笔记搬过来
展开
-
Streamsets FAQ(七)record can not be null
1、问题描述对接mysqlbinlog,实时同步数据,pipeline运行一段时间后报错record can not be nullpipeline直接挂掉,重启无法启动,依然报错,只有重置offset后才能运行起来。2、解决方案这个错误基本上都是因为原始数据库那边的表没有主键导致的,所以需要到原始库那边检测哪些数据表没有主键,给这些表添加主键配置,或者在pipeline中将这些没有主键的数据表忽略掉即可。这里也附上MySQL查看没有主键表的SQL语句SELECT t1..原创 2020-08-31 09:49:28 · 550 阅读 · 0 评论 -
Streamsets FAQ(六)关于SS的8小时问题总结
1、问题描述关于SS的8小时问题之前也写了2个文章,以为问题已经得到了解决,但是发现想的太简单,再次遇到这个问题,折腾了2天,现在把这个问题梳理一下。大数据平台使用的是CDH-6.2.0版本,安装在Centos7.6 64位服务器上,服务器时区为CST时区,SS使用的是3.13.0版本。数据同步的需要首先是从各个业务系统MySQL同步到中间库MySQL上,再根据数据分析的需要,有选择性的从中间库MySQL同步到大数据平台的kudu中,MySQL版本统一为5.6的,MySQL时区和安装MySQL的服务原创 2020-08-31 09:47:03 · 1469 阅读 · 0 评论 -
Streamsets FAQ(五)关于SS增量同步mysql数据过程中offset值时间偏差问题
1、问题描述CDH-6.2.0,SS-3.13.0。在使用SS同步mysql数据到kudu时使用JDBC Query Consumer,因为mysql的datetime数据到kudu的timestamp后少了8小时,给JDBC Query Consumer中JDBC配置添加了额外配置项,在最后的Additional JDBC Configuration Properties中增加2个配置serverTimezone UTCuseTimezone true添加这2个配置后.原创 2020-08-31 09:42:17 · 924 阅读 · 2 评论 -
Streamsets FAQ(四)SS同步binlog到kudu时间少8小时
1、问题描述当前使用的是CDH-6.2.0和SS-3.13.0版本,在同步增量binlog数据到MySQL的时候datetime格式的字段时间会多出8小时,基于这个原因我们修改了SS里面的mysql-binlog-connector-java-0.13.0.jar源码streamsets-3.13.0中使用的mysql-binlog-connector-java是0.13.0版本,找到0.13.0的源码,https://github.com/shyiko/mysql-binlog-connec原创 2020-08-31 09:39:49 · 1185 阅读 · 12 评论 -
Streamsets FAQ(三)SS前端界面时间格式调整
1、问题描述SS的前端界面时间显示默认使用的是CST时区,和中国时区有6小时时差(少了6小时),实际时间是2020-04-07 10:20:00,显示为2020-04-07 04:20:002、解决方案进行Settings,修改Timezone为UTC即可,无需重启。...原创 2020-08-31 09:36:58 · 714 阅读 · 1 评论 -
Streamsets FAQ(二)关于SS的8小时问题
1、问题描述在使用SS进行数据同步的过程中发现有8小时差值问题,具体表现为在使用JDBC Query Consumer这样的stage入到kudu时发现数据比MySQL中数据小8小时。在使用MySQL Binary Log这样的stage解析binlog数据时数据比MySQL中数据大了8小时,针对2种情况处理方式是不一样的。2、解决方案2.1、JDBC Query Consumer在JDBC Query Consumer这个stage的JDBC配置项中往下拉,在最后的Additiona.原创 2020-08-31 09:35:46 · 583 阅读 · 0 评论 -
Streamsets FAQ(一)使用binglog同步MySQL数据到kudu,date数据类型在两端不一致
1、问题描述使用streamsets将mysql数据同步到kudu中,直接解析mysql的binlog进行实时数据同步,发现一个小的细节问题,mysql中定义的date类型的字段在解析binlog后变成了带有星期几标致的值,如create字段是date类型,值为2019-06-19,那么streamsets的mysqlbinlog就会将其解析成Wed Jun 19,如果在kudu这边定义的create字段是string类型的话,这个值入库的时候就会是Wed Jun 19,和原始库差别太大了。2.原创 2020-08-31 09:31:45 · 858 阅读 · 4 评论 -
Streamset(十一)实时同步SQL Server2008R2数据
1、说明安装好SQL Server2008R2,安装好streamsets-3.17.0,测试实时同步SQL Server数据。2、配置sqlserver监听mysql binlog需要先开启binlog机制,sqlserver则需要配置对数据库启用cdc,并对数据表启用cdc机制。2.1、开启SQL Server代理除了sqlserver自身服务正常启动运行外还需要启动SQL Server代理服务2.1、创建数据库CREATE DATABASE yigou;..原创 2020-08-30 08:50:48 · 1632 阅读 · 2 评论 -
Streamsets(十)通过脚本监控pipeline任务状态
1、说明安装好streamsets后直接内置了restful API的说明http://172.27.13.109:18630/collector/restapi我们是监控某一个pipeline的运行状态,所使用的api为/rest/v1/pipeline/{pipelineId}/status需要指定所查询的pipeline的Id,返回的是json格式数据。2、测试直接在操作系统上使用curl命令来测试,Authorization为账号密码进行加密后得到的字..原创 2020-08-29 12:44:49 · 1228 阅读 · 3 评论 -
Streamsets(九)启停控制脚本
1、streamsets启停控制脚本#!/bin/shif [ $# = 1 ]then if [ $1 = "help" ] then echo "control the streamsets process, eg:sh streamsets.sh start|stop|restart|status" elif [ $1 = "start" ] then pid=`ps -ef | grep streamsets | grep -v grep | grep -v /bin/ba原创 2020-08-29 12:42:04 · 848 阅读 · 0 评论 -
Streamsets(八)通过JavaScript Evaluator转换数据格式
1、pipeline说明在通过JDBC Query Consumer读取MySQL存量数据往kafka发送的时候记录值中字段名和字段值以map的形式传递,如下格式:{ "id": 3, "name": "rr", "address": "hefei", "age": 28, "weight": 102.0, "date_created": 1590028341000}这种格式的数据无法满足下游数据消费方的需求,需要额外加工,因此在JDBC Query Consumer后.原创 2020-08-29 12:40:39 · 1944 阅读 · 0 评论 -
Streamsets(七)SS读取binlog数据实时同步到kudu
1、创建pipeline创建新的pipeline binlog2kudu。2、MySQL Binary Log这块和之前配置一样,重新指定一个server id3、Field Renamer4、Kudu注意选择与自己kudu集群一致的stage librarykudu的master需要手动填写,端口默认7051,表名依然动态获取,如果是impala创建的kudu表记得加上前缀impala::default....原创 2020-08-29 12:38:36 · 639 阅读 · 7 评论 -
Streamsets(六)SS读取binlog数据实时同步到MySQL
1、说明实时同步binlog数据到MySQL我使用了2种方式,2、方式一第一种方式较为繁琐,数据从binlog流出,经过JS数据解析器将必要的字段解析出来,流入操作选择器,根据具体需要执行的增删改操作选择最后的JDBC Producer,pipeline如下:binlog数据到JS数据解析器之前是这样{ "BinLogFilename": "mysql-bin.000001", "Type": "INSERT", "Table": "test", "ServerId": 1原创 2020-08-29 12:36:18 · 1543 阅读 · 5 评论 -
Streamsets(五)SS读取binlog数据并存储到本地
1、配置MySQL binlog1.1、修改mysql配置首先查看一下当前MySQL是否开启了binlogmysql -u root -p -e "show global variables like '%log_bin%';"修改/etc/my.inf文件,在mysqld下面加上以下参数,需要注意log_bin所配置的目录是不是已经存在并且目录权限是mysql:mysql如果不是记得手动去创建目录并修改权限,否则后面mysql重启会因为找不到目录而启动失败server-i.原创 2020-08-29 12:31:17 · 1641 阅读 · 0 评论 -
Streamsets(四)SS配置MySQL存量数据同步到kudu
1、MySQL建表在MySQL中建表CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL D原创 2020-08-29 12:24:45 · 544 阅读 · 0 评论 -
Streamsets(三)SS配置MySQL数据同步到本地目录
1、配置pipeline安装好SS并配置好MySQL驱动后简单的测试从MySQL读取数据,写入到本地的文件系统(这里说的本地指的是运行SS服务的服务器)1.1、配置JDBC Query Consumer这里需要定义一个执行的SQL语句,SQL语句需要符合相关规范,包括有where条件,order by 排序规则,如下:select * from user_organ_base where date_created>'${OFFSET}' order by date_created原创 2020-08-29 11:47:20 · 612 阅读 · 0 评论 -
Streamsets(二)SS添加MySQL驱动包
1、创建目录因为是使用的CDH集成的SS,因此外部依赖的目录实际上并没有创建,外部依赖的存放位置从这查看到部署了SS的服务器上手动创建SDC Libraries Extra Directory配置的目录,并修改权限为sdc:sdcsudo mkdir /opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.13.0/streamsets-libs-extrassudo chown -R sdc:sdc /opt/cloudera/par.原创 2020-08-29 11:43:29 · 683 阅读 · 0 评论 -
Streamsets(一)CDH-6.2.0集成Streamsets-3.13.0
1、下载安装包根据操作系统版本下载所需安装包,需要一个parcel包、parcel文件对应的SHA文件,以及一个csd jar包https://archives.streamsets.com/index.html实际上最好是知道所想使用的streamsets是否可以很好的支持我们的CDH平台,可以从官网的https://streamsets.com/documentation/datacollector/3.13.x/help/datacollector/UserGuide/I.原创 2020-08-29 11:39:30 · 675 阅读 · 0 评论