我正在尝试使用Apache-Flink流使用官方文档在此处连接到Twitter。
尽管我能够使用API成功地解析示例TwitterExampledata,但是当我尝试使用相同的实际数据连接时,我会得到ClassNotFoundException。
java.lang.NoClassDefFoundError: org/apache/flink/twitter/shaded/com/google/common/base/Preconditions
at com.twitter.hbc.core.endpoint.BaseEndpoint.<init>(BaseEndpoint.java:37)
at com.twitter.hbc.core.endpoint.DefaultStreamingEndpoint.<init>(DefaultStreamingEndpoint.java:35)
at com.twitter.hbc.core.endpoint.StatusesSampleEndpoint.<init>(StatusesSampleEndpoint.java:24)
at org.apache.flink.streaming.connectors.twitter.TwitterSource$SampleStatusesEndpoint.createEndpoint(TwitterSource.java:208)
at org.apache.flink.streaming.connectors.twitter.TwitterSource.run(TwitterSource.java:124)
at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:87)
at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:55)
据我所知,这是在编译时可用的,并且在运行时丢失,我该如何在运行时提供此功能。
以下是我正在使用的命令:
./flink run /path/to/jar/target/Twitter.jar --output file:///tmp/b.out --twitter-source.consumerKey <my-consumer-key> --twitter-source.consumerSecret <My consumer secret> --twitter-source.tokenSecret <my token secret> --twitter-source.token <my source token>
注意:
- 我正在使用使用MVN Clean Package创建的Fat Jar
- 我的访问令牌有效,我也验证了相同的
您在Twitter示例的构建过程中偶然发现了一个错误,从而导致了源的依赖性。我已经提交了Jira。同时,要运行示例,您将必须手动构建Twitter源(在Flink/Flink-Connectors/Flink-Connectors-Twitter下),然后将结果JAR复制到/lib文件夹中。
直到修复程序到达,请在弗林克 - 示例流的maven Shaded-Plugin配置中添加以下行。
<include>org/apache/flink/twitter/shaded/com/google/common/**</include>