簡體   English   中英

使用 Scala Spark2 Streaming 從 Kafka 讀取

[英]Reading from Kafka with Scala Spark2 Streaming

我需要連接到 Kafka 並從中讀取數據(之后我必須在 ElasticSearch 數據庫中寫入),但現在,我只想讀取和打印數據..

我是 Kafka 和 Scala 的新手,在互聯網上閱讀我編寫了以下代碼:

//spark
import org.apache.spark._
import org.apache.spark.streaming._

//kafka
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.apache.kafka.common.serialization.StringDeserializer
import org.apache.spark.streaming.kafka010._
import org.apache.spark.streaming.kafka010.LocationStrategies.PreferConsistent
import org.apache.spark.streaming.kafka010.ConsumerStrategies.Subscribe



object Main extends App{

val master = "local[2]"
val hostname = ""

val conf = new SparkConf().setAppName("KafkaConnection").setMaster(master)
val sc = SparkContext.getOrCreate(conf)
val ssc = new StreamingContext(sc, Seconds(1))

val kafkaParams = Map[String, Object](
  "bootstrap.servers" -> "localhost:9092,anotherhost:9092",
  "key.deserializer" -> classOf[StringDeserializer],
  "value.deserializer" -> classOf[StringDeserializer],
  "group.id" -> "IRC",
  "auto.offset.reset" -> "latest",
  "enable.auto.commit" -> (false: java.lang.Boolean)
)

val topics = Array("topicA", "topicB")
val stream = KafkaUtils.createDirectStream[String, String](
  ssc,  PreferConsistent,  Subscribe[String, String](topics, kafkaParams))

stream.map(record => (record.key, record.value))

val offsetRanges = Array(
  // topic, partition, inclusive starting offset, exclusive ending offset
  OffsetRange("test", 0, 0, 100),
  OffsetRange("test", 1, 0, 100)
)

val rdd = KafkaUtils.createRDD[String, String](
    ssc, kafkaParams, offsetRanges, PreferConsistent)

}

但我不知道如何繼續。 我現在需要什么? 另外,您知道我可以用來閱讀的任何公共 Kafka Broker/主題嗎?

先感謝您!

我現在需要什么?

嘗試運行代碼。 spark-submit或運行 main 方法。

你知道我可以用來閱讀的任何公共 Kafka Broker/topic 嗎?

那將是不安全的,所以不。 按照 Kafka 快速入門官方指南在本地啟動您自己的經紀人。

您的代碼當前從名為test的主題中讀取

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM