У меня есть RDD, который был бы как ((String, String), TimeStamp)
. У меня большое количество записей, и я хочу выбрать для каждой клавиши запись с самым последним значением TimeStamp. Я пробовал следующий код и все еще пытаюсь это сделать. Может ли кто-нибудь помочь мне сделать это?Как подобрать самую раннюю дату отметки времени из RDD в scala
Код ниже я попытался не так и не работает, а
val context = sparkSession.read.format("jdbc")
.option("driver", "com.mysql.jdbc.Driver")
.option("url", url)
.option("dbtable", "student_risk")
.option("user", "user")
.option("password", "password")
.load()
context.cache();
val studentRDD = context.rdd.map(r => ((r.getString(r.fieldIndex("course_id")), r.getString(r.fieldIndex("student_id"))), r.getTimestamp(r.fieldIndex("risk_date_time"))))
val filteredRDD = studentRDD.collect().map(z => (z._1, z._2)).reduce((x, y) => (x._2.compareTo(y._2)))
z => (z._1, z._2)) неверно. Этот фрагмент вместо этого вытаскивает курсор_ид и student_id. Вы должны растянуть третью переменную. Я плохо разбираюсь в scala, поэтому не могу предоставить точную часть кода. – srikanth
BTW - название гласит, что вы ищете «самое раннее», в то время как текст говорит «последнее» - я ответил на основании заголовка, очевидно, это легко изменить. –
Небольшая проблема при передаче моего требования с использованием языка. Что мне нужно, чтобы отобразить запись с самым ранним значением отметки времени с каждым ключом. – Kepler