我正在尝试使用kafka thorugh spark流中的数据。使用后,我将关注dstream。
scala> val strmk = stream.map(record => (record.value,record.timestamp))
strmk: org.apache.spark.streaming.dstream.DStream[(String, Long)] =
org.apache.spark.streaming.dstream.MappedDStream@7ad7cdad
现在我想将其转换为数据框。我的(record.value)包含5个以“,”和(record.timestamp)为时间戳的数据,这些数据具有来自kafka的时间戳。 例如:
record.value包含类似数据
ton,2018,34,ford,GERMANY
record.timestamp包含
2019-02-07 21:52:43
我想将时间戳转换为DF作为最后一列。
有人可以帮忙吗?
我尝试了以下操作,但还不确定如何添加时间戳字段
val requestsDataFrame = strmk.map(line => line._1.split(',')).map(s => (s(0).toString, s(1).toString,s(2).toString,s(3).toString,s(4).toString))
requestsDataFrame.foreachRDD((rdd, time) => {
val sqlContext = SQLContextSingleton.getInstance(rdd.sparkContext)
import sqlContext.implicits._
val requestsDataFrame = rdd.map(w => Record(w._1, w._2, w._3,w._4, w._5)).toDF()
requestsDataFrame.createOrReplaceTempView("requests")
val word_df =sqlContext.sql("select * from requests ")
println(s"========= $time =========")
word_df.show()
})
有人可以帮忙在数据框中添加时间戳字段吗?