【SDC】StreamSets实战之路-18-实战篇-爬取CSDN博客之星统计数据并入库

本文介绍了使用StreamSets如何配置定时器、HTTP获取CSDN博客之星数据、处理数据流并将其入库到MySQL的过程,包括解决入库时的字符编码问题。
摘要由CSDN通过智能技术生成

StreamSets 在爬取数据上也有着惊人的表现,它可以方便的调用接口,并简单的转换为json对象,然后进行入库,整个操作过程行云流水一般。

1、配置定时器

由于StreamSets在之前版本没有定时器,所以想设定固定间隔是个很麻烦的事情,而现在有了定时器CRON,则可以方便的加入定时功能。

在这里插入图片描述
其配置如下所示, 按照图中的配置,仅需要配置为每10分钟1次即可。当然,你可以按照你的频率进行额外的调整。
在这里插入图片描述

2、http获取数据

在这里插入图片描述
其需要配置HTTP项,配置内容如下:
在这里插入图片描述
我们把采集到的数据放在 /data 字段内。除了http的配置,我们还需要配置数据格式为json,并且特别需要配置最大数据长度为足够长,否则无法获取到数据。
在这里插入图片描述

3、增加流判断

在这里插入图片描述
流判断需要使用表达式进行编写,这里需要判断采集http接口返回的状态码是否为200,所以写作为${record:value("/data/code")==200}

在这里插入图片描述

4、数组转批量流记录

采集回来的数据在数组内,在StreamSets软件中,对数组的处理功能很弱,StreamSets的一个核心概念就是流。所以如果把数组转为批量的流记录,则处理起来轻而易举。
这里选用组件“Field Pivoter”。
在这里插入图片描述
配置如下:选好数组所在的字段,如果字段不存在,不处理错误。
在这里插入图片描述
后续数据可以直接入库了,不过因为返回的数据内有ID,而数据库内采用了id作为主键,默认会映射id过去,因此,这里需要先删除id字段。配置如下:
在这里插入图片描述

5、数据入库

这里采用mysql作为数据的持久化存储介质,我们选用了 组件“JDBC Tee”作为入库的助手,配置如下:
在这里插入图片描述
这里字段没有拷贝全面,需要把所有名称映射不同的字段进行配置,名称相同,就可以不配置了,会自动映射过去。
数据的操作选择为 插入。

6、表结构

mysql内,数据表结果如下:
在这里插入图片描述

7 整体视角

在这里插入图片描述

8 入库时小坑

在保存 nick_name时,提示错误 SQLState: HY000 Error Code: 1366 Message: Incorrect string value: '\xE8\xB0\错误,初始以为是utf-8编码问题,查找后发现并不是。
其原因是 nick_name 允许包含 Emoji 表情字符,而这个表情字符需要utf8mb4才能保存下,因此只需要修改表内的nick_name字段为 utf8mb4即可。当然修改整个数据库的字符集为 utf8mb4也可以,我这里就简单处理了下,仅修改表的字段。
在这里插入图片描述

9、运行后就不用管了

StreamSets运行新建立的管道,然后就可以了。数据陆续的入库了,查看下表数据。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值