我正在github上扩展flink连接器以获取自定义URL的Twitter流,尽管我能够获得示例代码中给出的随机推文,但是当我提供自定义URL时,推文未被提取(没有任何内容在控制台和文件上打印)。 我已经编写了一个customEndpoint,如下所示
public class CustomEndPoint implements EndpointInitializer, Serializable{
@Override
public StreamingEndpoint createEndpoint() {
return new RawEndpoint("https://api.twitter.com/1.1/search/tweets.json?q=%23apple", "GET");
}}
以下是我将自定义端点附加到连接器API
中给出的TwitterSource类的方法TwitterSource twitterSource = new TwitterSource(params.getProperties());
twitterSource.setCustomEndpointInitializer(new CustomEndPoint());
streamSource = env.addSource(twitterSource);
当我直接修改TwitterSource类的代码(即将我的端点硬编码到字段变量)时,同样的端点也可以工作,但我不想这样做,因为这不是使用API的最佳方式,加上我失去了在没有代码更改的情况下提供不同端点的能力
答案 0 :(得分:1)
这是因为您必须设置twitterSource主机属性。您的主机不是Flink Twitter源客户端使用的默认主机。
props.setProperty(TwitterSource.CLIENT_HOSTS,"https://api.twitter.com");
使用的默认主机是“ https://stream.twitter.com” 参见TwitterSource类,运行方法:
client = new ClientBuilder()
.name(properties.getProperty(CLIENT_NAME, "flink-twitter-source"))
.hosts(properties.getProperty(CLIENT_HOSTS, Constants.STREAM_HOST))
.endpoint(endpoint)
.authentication(auth)
.processor(new HosebirdMessageProcessor() {
...