Чтение метки времени с использованием DStream API в Spark Straming от Kafka - PullRequest
0 голосов
/ 30 апреля 2020

Я хочу прочитать значения из топики Кафки c с потоковой передачей Spark, используя Python. Я использую DStream API с поддержкой spark-streaming-kafka-0-8 (хотя и не рекомендуется). Мой код следующий:

from pyspark import SparkContext, SparkConf
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils

# Local SparkContext and StreamingContext (batch interval of 5 seconds)
sc = SparkContext(master="local[*]",
                  appName="Kafka-DStream-StdOut",
                  conf=SparkConf()
                  .set("spark.jars.packages", "org.apache.spark:spark-streaming-kafka-0-8_2.11:2.4.5"))
ssc = StreamingContext(sc, 5)

# Input: DStream from Apache Kafka
stream = KafkaUtils.createStream(
    ssc, "localhost:2181", "spark-streaming-consumer", {"test-topic": 1})

# Output: show stream in the console
stream.pprint()

ssc.start()
ssc.awaitTermination()

Проблема в том, что я получаю только ключ и значение, хранящиеся в Kafka, но не метку времени. Я вижу что-то подобное в консоли при отправке случайных чисел каждую секунду от производителя Kafka (код здесь ):

-------------------------------------------
Time: 2020-04-30 17:12:10
-------------------------------------------
(None, '69')
(None, '68')
(None, '6')
(None, '25')
(None, '73')

Есть ли способ прочитать метку времени в Spark, используя это подход

1 Ответ

0 голосов
/ 30 апреля 2020

Временная метка сообщения Kafka не является частью записи RDD, как в Структурированная потоковая передача

https://mvnrepository.com/artifact/org.apache.spark/spark-sql-kafka-0-10

enter image description here

Кроме того, не используйте Zookeeper для подключения к Кафке. Всегда используйте bootstrap.servers свойство

...