Apache spark 火花流+;卡夫卡整合

Apache spark 火花流+;卡夫卡整合,apache-spark,pyspark,apache-kafka,spark-streaming,spark-streaming-kafka,Apache Spark,Pyspark,Apache Kafka,Spark Streaming,Spark Streaming Kafka,我尝试使用pyspark在Jupyter笔记本中集成spark和卡夫卡。这是我的工作环境 Spark版本:Spark 2.2.1 卡夫卡版本:卡夫卡2.11-0.8.2.2 Spark streaming kafka jar:Spark-streaming-kafka-0-8-assembly_2.11-2.2.1.jar 我在Spark-defaults.conf文件中添加了一个Spark流kafka程序集jar文件 当我开始pyspark流媒体的streamingContext时,此错误显示

我尝试使用pyspark在Jupyter笔记本中集成spark和卡夫卡。这是我的工作环境

Spark版本:Spark 2.2.1 卡夫卡版本:卡夫卡2.11-0.8.2.2 Spark streaming kafka jar:Spark-streaming-kafka-0-8-assembly_2.11-2.2.1.jar

我在Spark-defaults.conf文件中添加了一个Spark流kafka程序集jar文件

当我开始pyspark流媒体的streamingContext时,此错误显示为无法从MANIFEST.MF读取kafka版本。

这是我的密码

from pyspark import SparkContext, SparkConf
from pyspark import SparkContext, SparkConf
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
import sys
import os

from kafka import KafkaProducer

#Receive data handler
def handler(message):
    records = message.collect()
    for record in records:
        print(record)
        #producer.send('receive', str(res))
        #producer.flush()

producer = KafkaProducer(bootstrap_servers='slave02:9092')
sc = SparkContext(appName="SparkwithKafka")
ssc = StreamingContext(sc, 1)

#Create Kafka streaming with argv
zkQuorum = 'slave02:2181'
topic = 'send'
kvs = KafkaUtils.createStream(ssc, zkQuorum, "spark-streaming-consumer", {topic:1})
kvs.foreachRDD(handler)

ssc.start()

很抱歉我在Scala上发帖

Scala 2.11和Kafka 0.10的Spark 2.2.1可以完成所有工作,尽管它们被标记为实验性的

如果使用上述库,创建流的正确方法是使用

val kStrream =  KafkaUtils.createDirectStream(
          ssc, PreferConsistent,
          Subscribe[String, String](Array("weblogs-text"), kafkaParams, fromOffsets))
请注意依赖项,例如kafka具有特定于kafka客户端版本和spark版本的jar文件

       <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
            <version>2.2.1</version>
            <scope>provided</scope>
        </dependency>

org.apache.spark
spark-streaming-kafka-0-10_2.11
2.2.1
假如

很抱歉我在Scala中发布了帖子

Scala 2.11和Kafka 0.10的Spark 2.2.1可以完成所有工作,尽管它们被标记为实验性的

如果使用上述库,创建流的正确方法是使用

val kStrream =  KafkaUtils.createDirectStream(
          ssc, PreferConsistent,
          Subscribe[String, String](Array("weblogs-text"), kafkaParams, fromOffsets))
请注意依赖项,例如kafka具有特定于kafka客户端版本和spark版本的jar文件

       <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
            <version>2.2.1</version>
            <scope>provided</scope>
        </dependency>

org.apache.spark
spark-streaming-kafka-0-10_2.11
2.2.1
假如

您提交代码的命令是什么?或者,您是如何将JAR加载到jupyter中的?编辑:糟糕,看起来不像python的api注意:KafkaUtils.createStream是读取kafka主题的旧方法。您应该使用@cricket_007 ssc.start()作为启动代码。我在Jupyter笔记本上测试。我将jar路由附加到spark-defaults.conf中,例如spark.jars spark-streaming-kafka-0-8-assembly_2.11-2.2.1。jar@Bameza但我知道spark与版本0.10.0不兼容。这就是我使用kafka 0.8.0 API的原因。我可以在Jupyter笔记本中使用kafka 0.10.0 API吗?我解决了这个问题。这是一个警告,我的应用程序不会因此而崩溃。它对我很有效。谢谢大家!您提交代码的命令是什么?或者,您是如何将JAR加载到jupyter中的?编辑:糟糕,看起来不像python的api注意:KafkaUtils.createStream是读取kafka主题的旧方法。您应该使用@cricket_007 ssc.start()作为启动代码。我在Jupyter笔记本上测试。我将jar路由附加到spark-defaults.conf中,例如spark.jars spark-streaming-kafka-0-8-assembly_2.11-2.2.1。jar@Bameza但我知道spark与版本0.10.0不兼容。这就是我使用kafka 0.8.0 API的原因。我可以在Jupyter笔记本中使用kafka 0.10.0 API吗?我解决了这个问题。这是一个警告,我的应用程序不会因此而崩溃。它对我很有效。谢谢大家!