主要通过一个新浪财经实时新闻采集的案例来介绍Streamsets(3.20.0 汉化版)的使用,主要包括数据采集、网页数据解析、数据检测、数据入库、邮件通知等。
学习目的:使用streamset实现网络数据的定时爬取、学习一些组件的使用、学习使用邮件组件、数据解析组件、分流组件、http client组件、调度器组件、ES入库组件等。
前一段时间因为工作较忙,没来及时更新,趁着假期准备一下,感觉还是要坚持的,也感谢很多网友的支持。
数据流视图:
最终数据流的效果图:
采集数据用Kibana展示的效果:
前期准备:
1.搭建一个ES和kibana系统,并创建索引:
{
"sina_livenews" : {
"mappings" : {
"properties" : {
"create_time" : {
"type" : "date",
"format" : "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
"id" : {
"type" : "long"
},
"rich_text" : {
"type" : "text",
"analyzer" : "ik_smart"
},
"tag" : {
"properties" : {
"id" : {
"type" : "keyword"
},
"name" : {
"type" : "keyword"
}
}
},
"type" : {
"type" : "long"
},
"update_time" : {
"type" : "date",
"format" : "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
"zhibo_id" : {
"type" : "long"
}
}
}
}
}
2.在streamset启动前配置一个邮件配置项
在etc/sdc.properties配置一下邮件,这里我用的是我自己的qq邮箱
在etc/email-password.txt中配置邮箱密码。
构建步骤:
1.新建数据流,点击保存,进入数据流构建页面
2.下面对构建好的数据流中的重点组件做介绍:
(1)调度器组件
主要用来采集的频率,这里规定频率为每2分钟采集数据,根据需求可以定制,不建议采集过于频繁。
(2)调度器组件
配置一下采集网页地址,请求头。
配置数据的格式,并配置是否是压缩数据和解析数据的长度。这里因为我们采集到的是字符串数据,所以我配置为文本,最大长度1024000000。
(3)截取字符串提取JSON数据
将JSON字符串转换为JSON对象数据
(4)提取真正关注的那部分数据
(5)从ES中查看采集到的数据是否已经入库
配置一下ES的连接,查询、用户名密码等等
(6)分流器筛选
使用分流器将不在ES中的数据传下去,在ES中的直接丢弃掉。
(7)使用JSON 生成插件将tag字符转化成一个JSON字符串,以备后面做字符串匹配使用。
(8)保留最终想要的数据,去除一些其他无关的数据。
(9)配置邮件插件
(10)将数据写入ES中
配置一些ES的地址,索引名等,和用户信息
(11)最后校验数据流,校验成功后启动数据流。
Streamsets实战之路正在更新中,尽情期待!!!
此文章为博主原创,转载请标明出处和原始链接,谢谢。