【问题标题】:Reading timestamp using DStream API in Spark Straming from Kafka在 Kafka 的 Spark Streaming 中使用 Stream API 读取时间戳
【发布时间】:2020-05-01 04:35:11
【问题描述】:

我想使用 Python 从带有 Spark 流的 Kafka 主题中读取值。我正在使用 spark-streaming-kafka-0-8 支持的 DStream API(尽管已弃用)。我的代码如下:

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 生产者(代码 here)每秒发送随机数时,我在控制台中看到类似的内容:

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

有没有办法使用这种方法读取 Spark 中的时间戳?

【问题讨论】:

  • 是数据中的时间戳吗?在我看来,Spark 只是打印当前时间戳而不是读取 RDD 的时间戳。
  • 正如你所说,DStream api 已被弃用。为什么不使用 SparkSQL?

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


【解决方案1】:

Kafka 消息时间戳不是 RDD 记录的一部分,就像在 Structured Streaming 中一样

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

另外,不要使用 Zookeeper 连接到 Kafka。始终使用bootstrap.servers 属性

【讨论】:

    猜你喜欢
    • 2019-04-30
    • 1970-01-01
    • 2016-11-29
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2018-01-17
    • 2020-10-29
    相关资源
    最近更新 更多