使用可运行java池在多线程中运行Spark作业

使用可运行java池在多线程中运行Spark作业,java,multithreading,scala,apache-spark,Java,Multithreading,Scala,Apache Spark,下面是在线程中运行spark代码的代码 我们可以并行运行spark任务,下面的代码是使用线程运行的示例 spark dataframe pass查询将来运行将有助于并行运行 我们可以在多线程定义的线程池中运行spark,在循环中,我们可以在并行模式下运行spark程序 //import statements import java.util.concurrent.Executors import org.apache.spark.sql.SparkSession import scala.

下面是在线程中运行spark代码的代码 我们可以并行运行spark任务,下面的代码是使用线程运行的示例

spark dataframe pass查询将来运行将有助于并行运行

我们可以在多线程定义的线程池中运行spark,在循环中,我们可以在并行模式下运行spark程序

 //import statements
import java.util.concurrent.Executors

import org.apache.spark.sql.SparkSession

import scala.io.Source.fromFile
//Defined class
object ParallerlExecution {

//main method start
  def main(args: Array[String]): Unit = {
//lad file
val queryList=loadFile()
start multi threading 
parallerlExecution(queryList)
  }
//method to load file
  def loadFile():List[String]={
    fromFile("").getLines().toList
  }
//defined method to multithreading
  def parallerlExecution(queryList:List[String]): Unit ={
//created spark session
    val spark=SparkSession.builder().appName("test").master("local[*]").getOrCreate()
    val url=""
    val username=""
    val password=""
//defined thread pool
    val pool= Executors.newFixedThreadPool(3)
//start for loop
    for(query<-queryList){

      val r= new Runnable {
        override def run(): Unit = {

          val st = System.currentTimeMillis();
//load sql db
          val df = spark.read
            .format("jdbc")
            .option("url", "jdbc:postgresql:dbserver")
            .option("dbtable", query)
            .option("user", username)
            .option("password", password)
            .load()
          val count = df.count
          val et = System.currentTimeMillis();
//printing final count
          println("Thread" + Thread.currentThread().getId() + "  Record Count " + count + " StartTime " + st + " Endtime " + et + " Query: " + query)

        }
      }
//start execute
      pool.execute(r)
    
    enter code here
    }
}
//导入语句
导入java.util.concurrent.Executors
导入org.apache.spark.sql.SparkSession
导入scala.io.Source.fromFile
//定义类
对象并行执行{
//主方法启动
def main(参数:数组[字符串]):单位={
//lad文件
val queryList=loadFile()
启动多线程
并行执行(queryList)
}
//方法来加载文件
def loadFile():列表[字符串]={
fromFile(“”.getLines().toList
}
//多线程的定义方法
def并行执行(queryList:List[String]):单位={
//创建spark会话
val spark=SparkSession.builder().appName(“test”).master(“local[*]).getOrCreate()
val url=“”
val username=“”
val password=“”
//定义的线程池
val pool=Executors.newFixedThreadPool(3)
//循环启动
用于(查询)