使用可运行java池在多线程中运行Spark作业
下面是在线程中运行spark代码的代码 我们可以并行运行spark任务,下面的代码是使用线程运行的示例 spark dataframe pass查询将来运行将有助于并行运行 我们可以在多线程定义的线程池中运行spark,在循环中,我们可以在并行模式下运行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.
//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)
//循环启动
用于(查询)