如何使用当前版本流式传输Kafka-> Zeppelin-> Spark

时间:2019-07-18 12:32:10

标签: apache-spark pyspark apache-kafka spark-streaming apache-zeppelin

我有一个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库。尝试一个   以下。

     
      
  1. 将Kafka库及其依赖项包含在    spark-submit命令为

         

    $ bin / spark-submit --packages org.apache.spark:spark-streaming-kafka-0-8:2.4.0 ...

  2.   
  3. 从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 ...

  4.   
     

无法执行第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”对象不可调用

所以我想知道如何解决任务:

  1. 尽管几个月以来已被弃用,但我是否真的应该使用spark-streaming-kafka-0-8?但是spark-streaming-kafka-0-10似乎位于默认的zeppelin-jar目录中。
  2. 在Zeppelin中为Java / Scala配置/创建解释器,因为spark-streaming-kafka-0-10仅支持这些语言?
  3. 忽略Zeppelin,并使用“ spark-submit”在控制台上执行此操作吗?

0 个答案:

没有答案