无法从水槽中提取火花流应用中的事件

时间:2016-01-07 14:17:24

标签: apache-spark spark-streaming flume-ng

我正在尝试将水槽与火花流应用程序集成。我正在运行火花Scala样本FlumePollingEventCount从水槽中拉出事件。我正在单机上运行火花作业。

我有以下配置。

Avro Source - >记忆频道 - > Spark SInk

    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1

    a1.sources.r1.type = avro
    a1.sources.r1.bind = 192.168.1.36
    a1.sources.r1.port = 41414

    a1.sinks.k1.type = org.apache.spark.streaming.flume.sink.SparkSink
    a1.sinks.k1.hostname = 192.168.1.36
    a1.sinks.k1.port = 41415

    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1

我使用avro客户端在41414发送活动,但火花流不能接收任何活动。

启动spark示例时出现以下错误

WARN FlumeBatchFetcher:由于Flume代理程序出错,未收到Flume代理程序的事件:当事务处于打开状态时调用begin()!

在水槽控制台,我得到以下异常; 2016-01-07 19:56:51,344(Spark Sink Processor Thread - 10)[WARN - org.apache.spark.streaming.flume.sink.Logging $ class.logWarning(Logging.scala:59)] Spark无法成功处理事件。交易正在回滚。 2016-01-07 19:56:51,344(新I / O工作者#5)[WARN - org.apache.spark.streaming.flume.sink.Logging $ class.logWarning(Logging.scala:59)]收到错误批处理 - 没有从频道收到任何事件! 2016-01-07 19:56:51,353(新I / O工作者#5)[WARN - org.apache.spark.streaming.flume.sink.Logging $ class.logWarning(Logging.scala:59)]收到错误批处理 - 没有从频道收到任何事件! 2016-01-07 19:56:51,355(Spark Sink Processor Thread - 9)[WARN - org.apache.spark.streaming.flume.sink.Logging $ class.logWarning(Logging.scala:80)]处理事务时出错。 java.lang.IllegalStateException:当事务处于打开状态时调用begin()!     在com.google.common.base.Preconditions.checkState(Preconditions.java:145)     在org.apache.flume.channel.BasicTransactionSemantics.begin(BasicTransactionSemantics.java:131)     在org.apache.spark.streaming.flume.sink.TransactionProcessor $$ anonfun $ populateEvents $ 1.apply(TransactionProcessor.scala:114)     在org.apache.spark.streaming.flume.sink.TransactionProcessor $$ anonfun $ populateEvents $ 1.apply(TransactionProcessor.scala:113)     在scala.Option.foreach(Option.scala:236)     在org.apache.spark.streaming.flume.sink.TransactionProcessor.populateEvents(TransactionProcessor.scala:113)     在org.apache.spark.streaming.flume.sink.TransactionProcessor.call(TransactionProcessor.scala:243)     在org.apache.spark.streaming.flume.sink.TransactionProcessor.call(TransactionProcessor.scala:43)

有人可以给我一些线索吗?

3 个答案:

答案 0 :(得分:2)

当我使用spark-flume-approach2但在flume classpath中包含不同版本的spark-streaming-flume_${spark.scala.version}时遇到了同样的问题。如果您包含上述链接中指定的确切版本,则不应再次看到此错误。

答案 1 :(得分:2)

我遇到了同样的问题,它确实是由不同的jar版本引起的。 用scala-library-2.11.8.jar替换scala-library-2.11.7.jar后,问题已得到解决。但是当交易是开放时,最初的消息' begin()被调用!'应该更有意义。 感谢Sandeep和user2710368

答案 2 :(得分:0)

在我的情况下,这是对SandeepKumar非常不满意的, 在我的lib目录中,我有2个版本的scala-Library, 删除旧的,剩下的必要的一个解决了我的情况,这花了我5个小时。

相关问题