Нов съм в Spark & scala. Имам изискване да обработя брой json файлове, да речем от s3 местоположение. Тези данни са основно пакетни данни, които ще бъдат запазени за повторна обработка по-късно. Сега моята работа на Spark трябва да обработи тези файлове по такъв начин, че да избере 5 необработени json записа и да изпрати съобщение до темата Kafka. Причината за избора на само 5 записа е, че темата kafka обработва едновременно данни в реално време и пакетни данни по една и съща тема. така че пакетната обработка не трябва да забавя обработката в реално време.
Трябва да обработя целия json файл последователно и затова бих избрал само 5 записа наведнъж и ще публикувам съобщение до kafka и ще избера следващите 5 записа на json файл и така нататък...
Написах част от код, който ще чете от json файлове и ще го публикува в kafka тема.
val jsonRDD = sc.textFile(s3Location)
var count = 0
val buf = new StringBuilder
jsonRDD.collect().foreach(line => {
count += 1
buf ++= line
if (count > 5) {
println(s"Printing 5 jsons $buf")
count = 0
buf.setLength(0)
SendMessagetoKakfaTopic(buf) // psuedo cod for sending message to kafkatopic
Thread.sleep(10000)
}
})
if (buf != null) {
println(s"Printing remaining jsons $buf")
SendMessagetoKakfaTopic(buf)
}
Вярвам, че има по-ефективен начин за обработка на JSON в Spark.
Освен това трябва да търся други параметри като памет, ресурси и т.н. Тъй като данните може да надхвърлят 100 гигабайта.