使用Flume 1.9.0采集Twitter实时推文时出现403错误如何解决
问题现象
使用Flume 1.9.0内置的Twitter数据源采集实时推文时,接口返回如下403报错:
* content="text/html; charset=utf-8"/> <title>Error 403 Please use V2 filtered and sample volume stream as alternatives </title> </head> <body> <h2>HTTP ERROR: 403</h2> <p>Problem accessing '/1.1/statuses/sample.json'. Reason: <pre> Please use V2 filtered and sample volume stream as alternatives </pre> </body> </html>
问题根因
Flume 1.9.0官方版本自带的Twitter Source默认对接Twitter API v1.1版本的采样流接口,Twitter已经正式关停v1.1版本流接口的公开访问权限,所有对该接口的请求都会被拒绝,官方明确要求所有流相关场景必须切换到v2版本的过滤流、采样流接口。
可行解决方案
- 自定义开发Flume Source适配v2接口
- 登录Twitter开发者平台创建v2 API项目,生成对应项目的
Bearer Token,确认账号已开通采样流/过滤流的访问权限,免费开发者账号默认提供基础的采样流访问额度。 - 基于Flume Source开发规范重写Twitter采集逻辑:
- 将请求地址替换为v2版本对应接口:全量采样流用
/2/tweets/sample/stream,带规则筛选的过滤流用/2/tweets/search/stream - 替换鉴权逻辑:不再使用v1.1版本的四组密钥签名鉴权,直接在请求头携带
Authorization: Bearer <你的项目Bearer Token> - 调整响应解析逻辑适配v2接口返回的JSON结构
- 将请求地址替换为v2版本对应接口:全量采样流用
- 将开发完成的代码打包为jar包,上传到Flume部署路径下的
lib目录,在Flume agent配置文件中指定Source类型为自定义类的全路径,补充Bearer Token、采集字段、过滤规则等配置项,重启agent即可正常采集。
- 登录Twitter开发者平台创建v2 API项目,生成对应项目的
- 直接使用社区适配v2的Twitter Source插件
找社区已经开发维护的适配Twitter API v2的Flume Source插件包,下载后放到Flume的lib目录,参照插件说明修改agent配置即可使用,不需要自行开发,注意提前验证插件的字段解析、容错逻辑是否符合业务要求。 - 中转层适配方案(适合快速验证场景,不推荐生产长期使用)
单独开发一个轻量中转服务,独立调用Twitter v2流接口拉取数据,将数据转换为Flume原生支持的数据源格式,比如写入指定目录的日志文件、推送到Kafka集群,再通过Flume自带的Taildir Source、Kafka Source对接中转后的数据完成采集,不需要改动Flume本身的组件逻辑。
内容的提问来源于stack exchange,提问作者Saurabh Singh
相关产品推荐
相关产品推荐

