我正在尝试将水槽与火花流应用程序集成。我正在运行火花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)
有人可以给我一些线索吗?
答案 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个小时。