我有一个Kafka 2.3消息代理,想对Spark中的消息数据进行一些处理。首先,我想使用Zeppelin 0.8.1中集成的Spark 2.4.0,并希望使用Zeppelin笔记本进行快速原型制作。
对于此流任务,我需要根据https://spark.apache.org/docs/latest/streaming-kafka-integration.html的Spark> 2.3的“ spark-streaming-kafka-0-10”(仅支持Java和Scale(不支持Python))。但是Zeppelin中没有默认的Java或Scale解释器。
如果我尝试此代码(摘自https://www.rittmanmead.com/blog/2017/01/getting-started-with-spark-streaming-with-python-and-kafka/)
%spark.pyspark
from pyspark import SparkContext
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
import json
sc.setLogLevel("WARN")
ssc = StreamingContext(sc, 60)
kafkaStream = KafkaUtils.createStream(ssc, 'localhost:9092', 'spark-streaming', {'test':1})
我收到以下错误
在类路径中找不到Spark Streaming的Kafka库。尝试一个 以下。
将Kafka库及其依赖项包含在 spark-submit命令为
$ bin / spark-submit --packages org.apache.spark:spark-streaming-kafka-0-8:2.4.0 ...
从Maven Central http://search.maven.org/下载工件的JAR, 组ID = org.apache.spark,工件ID = spark-streaming-kafka-0-8-assembly,版本= 2.4.0。 然后,将jar包含在spark-submit命令中,
$ bin / spark-submit --jars ...
无法执行第1行:kafkaStream = KafkaUtils.createStream(ssc, 'localhost:9092','spark-streaming',{'test':1})追溯(大多数 最近通话结束):文件 “ /tmp/zeppelin_pyspark-8982542851842620568.py”,第380行,在 exec(code,_zcUserQueryNameSpace)文件“”,文件中的第1行 “ /usr/local/analyse/spark/python/lib/pyspark.zip/pyspark/streaming/kafka.py”, 第78行,在createStream中 helper = KafkaUtils._get_helper(ssc._sc)文件“ /usr/local/analyse/spark/python/lib/pyspark.zip/pyspark/streaming/kafka.py”, _get_helper中的第217行 返回sc._jvm.org.apache.spark.streaming.kafka.KafkaUtilsPythonHelper() TypeError:“ JavaPackage”对象不可调用
所以我想知道如何解决任务: