我试图连接到twitter使用ApacheFlink流使用官方文档在这里。
虽然我能够使用api成功解析twitterexampledata示例,但是当我尝试使用相同的api连接实际数据时,我得到了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。
下面是我正在使用的命令:
./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>
注:
我使用的是fat jar,它是使用mvn clean包创建的
我的访问令牌是有效的,我也验证了相同的
1条答案
按热度按时间n6lpvg4x1#
您在twitter示例的构建过程中偶然发现了一个bug,导致源代码的依赖项被排除。我已经提交了jira。同时,要运行该示例,您必须手动构建twitter源代码(在flink/flink connectors/flink connectors twitter下),并将结果jar复制到/lib文件夹中。
在修复程序到达之前,在flinkexamples streaming的maven shaded插件配置中添加下面一行。