使用Spark ||对Twitter Hashtags进行实时情感分析启动流服务时出错

时间:2016-05-17 17:17:09

标签: twitter apache-spark streaming ibm-cloud

我刚刚开始使用IBM Bluemix,并希望给火花流部分一个镜头。

我已经开始使用2个教程,这些教程用作Spark和Watson对Twitter Hashtags的情感分析的介绍。

然而,在所提供的案例中,我都无法启动火花流。

这两个教程都使用提供的Github project's iPython笔记本来显示使用Spark Streaming的示例应用程序。

这是我使用第一个笔记本遇到的异常的示例异常日志。

Registering JaasConfiguration: /tmp/pMftPERZFap2a9SH/jaas.conf
Setting hadoop configuration for swift container
https://kafka-rest-prod01.messagehub.services.us-south.bluemix.net:443/admin/topics
https://kafka-rest-prod01.messagehub.services.us-south.bluemix.net:443/admin/topics
https://kafka-rest-prod01.messagehub.services.us-south.bluemix.net:443/admin/topics
default location of ssl Trust store is: /usr/local/src/spark160master/ibm-java-x86_64-80/jre/lib/security/cacerts
Twitter stream started
Tweets are collected real-time and analyzed
To stop the streaming and start interacting with the data use: StreamingTwitter.stopTwitterStreaming
Receiver Started: KafkaReceiver-0
Receiver Stopped: KafkaReceiver-0
Reason: org.apache.kafka.common.config.ConfigException: Invalid value com.ibm.cds.spark.samples.StatusDeserializer for configuration value.deserializer: Class com.ibm.cds.spark.samples.StatusDeserializer could not be found.
    at org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:204)
    at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:122)
    at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:48)
    at org.apache.kafka.clients.consumer.ConsumerConfig.<init>(ConsumerConfig.java:194)
    at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:380)
    at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:363)
    at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:350)
    at com.ibm.cds.spark.samples.dstream.KafkaReceiver.onStart(KafkaInputDStream.scala:88)
    at org.apache.spark.streaming.receiver.ReceiverSupervisor.startReceiver(ReceiverSupervisor.scala:148)
    at org.apache.spark.streaming.receiver.ReceiverSupervisor.start(ReceiverSupervisor.scala:130)
    at org.apache.spark.streaming.scheduler.ReceiverTracker$ReceiverTrackerEndpoint$$anonfun$9.apply(ReceiverTracker.scala:575)
    at org.apache.spark.streaming.scheduler.ReceiverTracker$ReceiverTrackerEndpoint$$anonfun$9.apply(ReceiverTracker.scala:565)
    at org.apache.spark.SparkContext$$anonfun$38.apply(SparkContext.scala:1997)
    at org.apache.spark.SparkContext$$anonfun$38.apply(SparkContext.scala:1997)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
    at org.apache.spark.scheduler.Task.run(Task.scala:89)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1153)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.lang.Thread.run(Thread.java:785)
 : Error starting receiver 0

您将在笔记本中看到一些需要输入凭据的部分(Twitter App,Kafka Service Credentials)。起初我认为这是一个相关的凭证,所以如果它是凭证问题,我会多次重新检查。然后我试着看一下示例项目中使用的不同类以及错误日志中提到的类,但我可以&# 39;似乎解决了这个问题。

我想问题的答案在于这三行代码:

Reason: org.apache.kafka.common.config.ConfigException: Invalid value com.ibm.cds.spark.samples.StatusDeserializer for configuration value.deserializer: Class com.ibm.cds.spark.samples.StatusDeserializer could not be found.
    at org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:204)
    at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:122)
    at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:48)

请提供一些指导,说明如何解决这个问题。我喜欢继续前进并尝试各种新事物,但我需要确定这是一个什么样的问题。

2 个答案:

答案 0 :(得分:0)

Spark服务发生了变化,导致了这个问题。已提供修复程序。你可以尝试再次运行该应用程序。 谢谢,大卫

答案 1 :(得分:0)

目前我也在关注Real-Time Sentiment Analysis Tutorial。显然修复工作正常,因为我能够启动Spark流并且笔记本的输出显示它收集记录。

然而,仪表板不会创建任何图表并显示0处理过的推文。应用程序的日志中没有错误。我很感激任何建议。

更新:管理通过更改笔记本中Watson Tone Analyzer的配置来运行仪表板应用程序,因为它不再是测试版。

config.setConfig("watson.tone.url","https://gateway.watsonplatform.net/tone-analyzer/api")