Pyspark Структурированный локальный поток с Kafka-Jupyter - PullRequest
0 голосов
/ 31 октября 2018

После просмотра других ответов я все еще не могу понять это.

Я могу использовать kafkaProducer и kafkaConsumer для отправки и получения сообщений из моего блокнота.

    producer = KafkaProducer(bootstrap_servers=['127.0.0.1:9092'],value_serializer=lambda m: json.dumps(m).encode('ascii'))
    consumer = KafkaConsumer('hr',bootstrap_servers=['127.0.0.1:9092'],group_id='abc' )

Я пытался подключиться к потоку как с помощью контекста spark, так и сеанса spark.

    from pyspark.streaming.kafka import KafkaUtils
    sc = SparkContext("local[*]", "stream")
    ssc = StreamingContext(sc, 1)

Что дает мне эту ошибку

    Spark Streaming's Kafka libraries not found in class path. Try one 
    of the following.

    1. Include the Kafka library and its dependencies with in the
    spark-submit command as

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

Кажется, мне нужно было добавить JAR в мой

    !/usr/local/bin/spark-submit   --master local[*]  /usr/local/Cellar/apache-spark/2.3.0/libexec/jars/spark-streaming-kafka-0-8-assembly_2.11-2.3.2.jar pyspark-shell

, который возвращает

    Error: No main class set in JAR; please specify one with --class
    Run with --help for usage help or --verbose for debug output

В каком классе я учусь? Как мне заставить Pyspark подключиться к потребителю?

1 Ответ

0 голосов
/ 31 октября 2018

Ваша команда пытается запустить spark-streaming-kafka-0-8-assembly_2.11-2.3.2.jar и пытается найти pyspark-shell в качестве Java-класса внутри этого.

Как говорит первая ошибка, вы пропустили --packages после spark-submit, что означает, что вы бы сделали

spark-submit --packages ... someApp.jar com.example.YourClass

Если вы находитесь в Jupyter локально, вы можете попробовать, например, Kafka-Python, а не PySpark ... Меньше накладных расходов и никаких зависимостей Java.

...