【问题标题】:Reading a stream from kafka using spark streaming and assigning a schema to it使用火花流从 kafka 读取流并为其分配模式
【发布时间】:2019-02-14 08:11:05
【问题描述】:

我正在尝试从 kafka 读取流,其中的值是一串逗号分隔值(表示数据集中的列) 目标是读取两个这样的流并加入它们。

如果我从文件中读取,有一种方法可以通过为输入流分配分隔符和模式来做到这一点。这是我能做的:

val stearm_L: DataFrame = spark.readStream
      .option("sep", ";")
      .schema(schema_L)
      .csv("inputFileSteam_L")

如果我从 kafka 而不是文件中读取,我该怎么做?

【问题讨论】:

    标签: scala csv apache-kafka spark-streaming spark-structured-streaming


    【解决方案1】:

    你基本上用format("kafka")代替csv("filename")

    在 Spark Streaming 部分下有一个关于 Kafka 集成的页面,以了解更多详细信息。

    关于解析 CSV,请参阅 spark streaming: read CSV string from kafka, write to parquet

    【讨论】:

    • 感谢您的回复。是的,这就是我所做的。但是,我无法再拆分数据并分配架构。例如,这是我能够做的: val stream_L_kafka: DataFrame = spark .readStream .format("kafka") .option("kafka.bootstrap.servers", "localhost:9092") .option("subscribe" , "L_stream") .load() val stream_L: Dataset[(String, String)] = stream_L_kafka.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)").as[(String, String )] 该值是我要拆分的逗号分隔字符串,然后为其分配架构
    • 您在使用map() 遍历数据框并拆分值列的字符串时遇到什么困难?
    猜你喜欢
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2019-09-20
    • 2023-03-18
    • 2017-04-27
    • 2020-03-10
    • 1970-01-01
    • 2018-12-30
    相关资源
    最近更新 更多