Я недавно работал над сценарием, в котором мне нужно передать набор больших данных (~ 1 миллиард) по одному конкретному клиенту, нажав простой URL-адрес https, например: https://www.example.com/field1="";field2=""
.
Здесь field1
& field2
будут иметь данные, которые будут отправлены через. Я пытался реализовать решение с использованием искрового scala, используя собственную архитектуру параллельных вычислений для ускорения процесса, но решение не совсем на должном уровне.
import java.net.URL
import java.io._
import javax.net.ssl.HttpsURLConnection
val counter = spark.sparkContext.longAccumulator
val df = spark.read.table("")
df .repartition(1000).rdd.foreachPartition (
part => {
part.foreach( row => {
val ID = row.getAs[String]("id")
val EXTID = row.getAs[String]("externId")
val httpsURL = "https://www.hello.com/activityi;dc_pre=CLzntvL5ueQCFZmsdwoddOwChw;src=6038155;type=neus;cat=ckt_b0;u100="+EXTID+";dc_lat=;dc_muid="+ID+";tag_for_child_directed_treatment=;tfua=;npa=;ord=1?"
val myURL:URL = new URL(httpsURL)
val conn:HttpsURLConnection= myURL.openConnection().asInstanceOf[HttpsURLConnection]
conn.connect()
if(conn.getResponseCode >= 200 && conn.getResponseCode() <=400){
counter.adad(1)
}
else{}
conn.disconnect()
})
}
)
Было бы хорошо, если бы кто-то мог предложить лучший способ добиться того же.