严格流中数据集中列的唯一计数

时间:2018-11-20 09:11:45

标签: apache-spark apache-spark-sql spark-structured-streaming apache-spark-dataset

我是结构流主题的新手。因此在计算“数据集” /“数据框”中列的不重复计数时会遇到问题。

// 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()

谢谢。

0 个答案:

没有答案