我是结构流主题的新手。因此在计算“数据集” /“数据框”中列的不重复计数时会遇到问题。
// DataFrame
val readFromKafka = sparksession.readStream.format("kafka").option("kafka.bootstrap.servers", bootstrapServer).option("subscribe", topic).option("failOnDataLoss", "false").load()
// Dataset [(String,Timestamp)]
val selected_readFromKafka = inPutStreamData.selectExpr("CAST(value AS STRING)", "CAST(timestamp AS TIMESTAMP)").as[(String, Timestamp)]
// Dataset [(Int,Int,String,Timestamp)]
val final_Data = selected_readFromKafka.map(f => {
val no1 = f._1.split('|').apply(0).toInt
val no2 = f._1.split('|').apply(1).toInt
val data = f._1.split('|').apply(2)
(no1, no2, data, f._2)
})
那么我们如何计算no1,no2列final_Data
上的不重复计数。
val count = final_Data...... ?
在下面的地图中使用 count 变量。
val selected_readFromKafka_Next = selected_readFromKafka.map(f => {
KafkaOutputResponse(
count,
"","",f.data
)
})
selected_readFromKafka_Next.writeStream.format("console").option("truncate", "false").start().awaitTermination()
谢谢。