Apache spark 如何使用Spark结构化流媒体打印Json编码的消息
我有一个DataSet[Row],其中每一行都是JSON字符串。我只想打印JSON流或计算每个批的JSON流 这是到目前为止我的代码 val ds=sparkSession.readStream 卡夫卡先生 .optionkafka.bootstrap.servers,bootstrapServers .选项订阅,主题名称 .option检查点位置,hdfscheckpoint目录 负载 val ds1=ds.selectfrom_jsonclavue.caststring,模式为“有效负载” val ds2=ds1。选择$payload.info val query=ds2.writeStream.outputModeappend.queryNametable.formatmemory.start 查询.等待终止 从表中选择*;-没有看到任何东西,也没有错误。然而,当我独立于公园单独运行我的卡夫卡消费者时,我可以看到数据 我的问题是,我需要做什么?只需使用结构化流媒体打印我从卡夫卡接收的数据?Kafka中的消息是JSON编码的字符串,因此我将JSON编码的字符串转换为某种结构,并最终转换为数据集。我正在使用Spark 2.1.0Apache spark 如何使用Spark结构化流媒体打印Json编码的消息,apache-spark,apache-spark-sql,spark-structured-streaming,Apache Spark,Apache Spark Sql,Spark Structured Streaming,我有一个DataSet[Row],其中每一行都是JSON字符串。我只想打印JSON流或计算每个批的JSON流 这是到目前为止我的代码 val ds=sparkSession.readStream 卡夫卡先生 .optionkafka.bootstrap.servers,bootstrapServers .选项订阅,主题名称 .option检查点位置,hdfscheckpoint目录 负载 val ds1=ds.selectfrom_jsonclavue.caststring,模式为“有效负载”
val ds1 = ds.select(from_json(col("value").cast("string"), schema) as payload).select($"payload.*")
这将在控制台上打印您的数据
ds1.writeStream.format("console").option("truncate", "false").start().awaitTermination()
在这种情况下,请始终使用“等待终止”或“线程”。睡眠时间以秒为单位。您是否也在Spark用户与TD的邮件列表中讨论过这个问题?试图找出这两个用例有多不同。嗨!是的,但我们还没有得出转换的结论。我只是尝试使用结构化流媒体来打印数据,但我很难做到这一点:我也尝试过val query=ds.writeStream.outputModeappend.formatconsole.start,但也没有成功