我正在尝试使用官方文档here使用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>
注意:
答案 0 :(得分:2)
你偶然发现了twitter示例的构建过程中的一个错误,导致源的依赖性被排除在外。我提交了JIRA。在此期间,要运行该示例,您必须手动构建twitter源(在flink / flink-connectors / flink-connectors-twitter下)并将生成的jar复制到/ lib文件夹中。
在修复程序到达之前,在flink-examples-streaming的maven-shaded-plugin配置中添加以下行。
<include>org/apache/flink/twitter/shaded/com/google/common/**</include>