我刚安装了apache hadoop并经历过它。我处于第一阶段,即提取数据。我正在使用来自cloudera +他们的VM的twitter示例。
我遇到的问题是正在阅读twitter数据的流似乎有问题,我不知道是什么。
这是我的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-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
如您所见,它至少能够连接到twitter API。这是由什么引起的?以前有没有经历过这个?
答案 0 :(得分:0)
自10月21日袭击DYN以来,Twitter流媒体API一直存在问题。这些已经在Twitter开发者论坛上报告,Twitter员工知道这个问题:https://twittercommunity.com/t/issues-reported-with-streams-since-10-21/76429。
到目前为止,问题的原因并没有明确的答案,但观察到的行为是,任何Twitter的流媒体端点的连接都会在短时间内关闭,通常(尽管并非总是如此)接收任何数据。有时连接会在发送响应时关闭,导致JSON无效。
其他端点似乎正在起作用。