使用PySpark将Kafka Stream转换为Spark Stream

时间:2018-10-09 12:16:58

标签: apache-spark pyspark apache-kafka spark-streaming stream-processing

我们有使用Avro的Kafka流。我需要使用python将其连接到Spark Stream。

我使用下面的代码来做到这一点:

kvs = KafkaUtils.createDirectStream(ssc, topic, {'bootstrap.servers': brokers}, valueDecoder=decoder)

然后我出现了波纹管错误。

  

调用o44.awaitTermination时发生错误。

     

2018-10-11 15:58:01信息DAScheduler:54-作业3失败:PythonRDD.scala:149处的runJob耗时1.403049 s

     

2018-10-11 15:58:01信息JobScheduler:54-完成作业流作业1539253680000 ms.0从作业时间集合1539253680000 ms

     

2018-10-11 15:58:01错误JobScheduler:91-运行作业流作业1539253680000 ms.0时出错

     

org.apache.spark.SparkException:Python引发了一个异常:   追溯(最近一次通话):

     

正在调用的文件“ /XXXXXX/spark2/python/lib/pyspark.zip/pyspark/streaming/util.py”,第65行

     

r = self.func(t,* rdds)

     

在takeAndPrint中的文件“ /XXXXXX/spark2/python/lib/pyspark.zip/pyspark/streaming/dstream.py”,第171行

     

taken = rdd.take(num + 1)

     

文件1375行中的“ /XXXXXX/spark2/python/lib/pyspark.zip/pyspark/rdd.py”

     

res = self.context.runJob(self,takeUpToNumLeft,p)

     

runJob中的文件“ /XXXXXX/spark2/python/lib/pyspark.zip/pyspark/context.py”,第1013行

     

sock_info = self._jvm.PythonRDD.runJob(self._jsc.sc(),mappedRDD._jrdd,分区)

     

调用

中的文件“ /XXXXXX/spark2/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py”第1257行      

answer,self.gateway_client,self.target_id,self.name)

     

文件“ /XXXXXX/spark2/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py”,第328行,位于get_return_value中

     

format(target_id,“。”,名称),值)

     

Py4JJavaError:调用z:org.apache.spark.api.python.PythonRDD.runJob时发生错误。   :org.apache.spark.SparkException:由于阶段失败而导致作业中止:阶段3.0中的任务0失败4次,最近一次失败:阶段3.0中的任务0.3(TID 8,gen-CLUSTER_NODE,执行者2)丢失: .spark.SparkException:无法连接到主题“ TOPIC_NAME 1”的负责人:java.nio.channels.ClosedChannelException

但是,在此错误显示在终端上并终止该过程之前,我可以通过使用以下代码来打印RDD

kvs.pprint()

什么是领导者?我们怎么能克服这个?

0 个答案:

没有答案