Nano Hash - криптовалюты, майнинг, программирование

Классы Spark Streaming/Kafka не найдены

Я пытаюсь создать Spark StreamingContext для потоковой передачи сообщений. из темы Кафки. Поэтому я добавил в свою сборку следующую зависимость:

"org.apache.spark:spark-streaming-kafka_2.10:1.6.2"

Затем я создал следующий класс:

import org.apache.spark.SparkContext
import org.apache.spark.streaming.Seconds
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.streaming.dstream.DStream

import kafka.serializer.StringDecoder
import org.apache.spark.streaming.kafka.KafkaUtils

object StreamingApp {
    def main(args: Array[String]): Unit = {
        def messageConsumer(): StreamingContext = {
            val topicName : String = "my-topic"
            val brokerHostAndPort : String = "mykafka.example.com:9092"

            val ssc = new StreamingContext(SparkContext.getOrCreate(), Seconds(10))

            createKafkaStream(ssc, topicName, brokerHostAndPort).foreachRDD(rdd => {
                rdd.foreach { msg =>
                    // TODO: Implement message processing here.
                }
            })

            ssc
        }

        StreamingContext.getActive.foreach {
            _.stop(stopSparkContext = false)
        }

        val ssc = StreamingContext.getActiveOrCreate(messageConsumer)
        ssc.start()
        ssc.awaitTermination()
    }

    def createKafkaStream(ssc: StreamingContext,
            kafkaTopics: String, brokers: String): DStream[(String, 
            String)] = {
        val kafkaParams = Map[String, String](
            "bootstrap.servers" -> brokers,
            "key.deserializer" -> "StringDeserializer",
            "value.deserializer" -> "StringDeserializer",
            "auto.offset.reset" -> "latest",
            "enable.auto.commit" -> "false"
        )        

        KafkaUtils.createDirectStream[String,String,StringDecoder,StringDecoder](
            ssc, kafkaParams, Set(kafkaTopics))
    }
}

Когда я компилирую это (через Ant, но это не имеет значения), я получаю scalac ошибок компилятора:

[scalac] /Users/myuser/workspace/myapp/src/main/groovy/com/me/myapp/utils/scala/StreamingApp.scala:11: error: not found: object kafka
[scalac] import kafka.serializer.StringDecoder
[scalac]        ^
[scalac] /Users/myuser/workspace/myapp/src/main/groovy/com/me/myapp/utils/scala/StreamingApp.scala:12: error: object kafka is not a member of package org.apache.spark.streaming
[scalac] import org.apache.spark.streaming.kafka.KafkaUtils
[scalac]                                   ^
[scalac] /Users/myuser/workspace/myapp/src/main/groovy/com/me/myapp/utils/scala/StreamingApp.scala:63: error: not found: value KafkaUtils
[scalac]         KafkaUtils.createDirectStream[String,String,StringDecoder,StringDecoder](ssc, kafkaParams, Set(kafkaTopics))
[scalac]         ^
[scalac] three errors found

Я пропустил какие-либо зависимости здесь? Или не использовать правильные зависимости? Или кодируете что-то неправильно?


Обновлять:

Интересно, что когда я меняю свою зависимость на:

"org.apache.spark:spark-streaming-kafka_2.10:1.6.1"

Эти ошибки компилятора исчезают...


Ответы:


1

идентификатор артефакта для зависимости kafka должен выглядеть так:

spark-streaming-kafka-0-8_2.11

Надеюсь, это сработает для вас.

27.04.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..