stream正在twitter4j(hadoop-flume)中关闭

zaqlnxep  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(386)

我刚刚安装了ApacheHadoop并进行了实验。我在第一阶段,就是提取数据。我使用的是cloudera+他们的vm中的twitter示例。
我遇到的问题是,读取twitter数据的流似乎有问题,我不知道是什么。
这是my flume.conf:

TwitterAgent.sources= Twitter
TwitterAgent.channels= MemChannel
TwitterAgent.sinks=HDFS
TwitterAgent.sources.Twitter.type = org.apache.flume.source.twitter.TwitterSource
TwitterAgent.sources.Twitter.channels=MemChannel

TwitterAgent.sources.Twitter.consumerKey=XXX
TwitterAgent.sources.Twitter.consumerSecret=XXX
TwitterAgent.sources.Twitter.accessToken=XXX
TwitterAgent.sources.Twitter.accessTokenSecret= XXX

TwitterAgent.sources.Twitter.keywords= trump

TwitterAgent.sinks.HDFS.channel=MemChannel
TwitterAgent.sinks.HDFS.type=hdfs
TwitterAgent.sinks.HDFS.hdfs.path=hdfs://localhost:8020/user/flume/tweets
TwitterAgent.sinks.HDFS.hdfs.fileType=DataStream
TwitterAgent.sinks.HDFS.hdfs.writeformat=Text
TwitterAgent.sinks.HDFS.hdfs.batchSize=1000
TwitterAgent.sinks.HDFS.hdfs.rollSize=0
TwitterAgent.sinks.HDFS.hdfs.rollCount=10000
TwitterAgent.sinks.HDFS.hdfs.rollInterval=600
TwitterAgent.channels.MemChannel.type=memory
TwitterAgent.channels.MemChannel.capacity=10000
TwitterAgent.channels.MemChannel.transactionCapacity=100

然后使用以下命令启动flume代理:

flume-ng agent -n TwitterAgent -c conf -f flume.conf

似乎很直截了当,但我运行代理时不断收到以下错误消息:

16/10/23 12:41:27 INFO twitter.TwitterSource: Starting twitter source org.apache.flume.source.twitter.TwitterSource{name:Twitter,state:IDLE} ...
16/10/23 12:41:27 INFO twitter.TwitterSource: Twitter source Twitter started.
16/10/23 12:41:27 INFO twitter4j.TwitterStreamImpl: Establishing connection.
16/10/23 12:41:28 INFO twitter4j.TwitterStreamImpl: Connection established.
16/10/23 12:41:28 INFO twitter4j.TwitterStreamImpl: Receiving status stream.
16/10/23 12:41:28 INFO twitter4j.TwitterStreamImpl: Stream closed.
16/10/23 12:41:28 ERROR twitter.TwitterSource: Exception while streaming tweets
Stream closed.
Relevant discussions can be found on the Internet at:
    http://www.google.co.jp/search?q=a8fd061d or
    http://www.google.co.jp/search?q=00070a0c
TwitterException{exceptionCode=[a8fd061d-00070a0c a8fd061d-0007099a], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.5}
    at twitter4j.StatusStreamBase.handleNextElement(StatusStreamBase.java:199)
    at twitter4j.StatusStreamImpl.next(StatusStreamImpl.java:57)
    at twitter4j.TwitterStreamImpl$TwitterStreamConsumer.run(TwitterStreamImpl.java:478)
Caused by: java.io.EOFException: Unexpected end of ZLIB input stream
    at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:240)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
    at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:116)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at java.io.BufferedReader.fill(BufferedReader.java:154)
    at java.io.BufferedReader.readLine(BufferedReader.java:317)
    at java.io.BufferedReader.readLine(BufferedReader.java:382)
    at twitter4j.StatusStreamBase.handleNextElement(StatusStreamBase.java:85)
    ... 2 more

如您所见,它至少能够连接到twitterapi。这是什么引起的?以前有人经历过吗?

7z5jn7bk

7z5jn7bk1#

自从10月21日dyn遭到攻击以来,twitter流媒体api一直存在问题。twitter开发者论坛上已经报道了这些问题,twitter员工也意识到了这个问题:https://twittercommunity.com/t/issues-reported-with-streams-since-10-21/76429.
到目前为止,问题的原因还没有一个明确的答案,但是观察到的行为是,到twitter的任何流媒体端点的连接在短时间后就会关闭,通常(尽管不总是)没有收到任何数据。有时在发送响应时连接会关闭,从而导致无效的json。
然而,rest端点似乎正在工作。

相关问题