Эффективный способ вызвать простой URL-адрес https 1 миллиард раз - PullRequest
0 голосов
/ 21 октября 2019

Я недавно работал над сценарием, в котором мне нужно передать набор больших данных (~ 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()
                 })
           }
)

Было бы хорошо, если бы кто-то мог предложить лучший способ добиться того же.

...