Во-первых, позвольте мне написать часть кода, которую я хочу выполнить, в файле .scala на Spark.
Это мой исходный файл. Имеет структурированные данные с четырьмя полями.
val inputFile = sc.textFile("hdfs://Hadoop1:9000/user/hduser/test.csv")
Я объявил класс case для хранения данных из файла в таблице с четырьмя столбцами
case class Table1(srcIp: String, destIp: String, srcPrt: Int, destPrt: Int)
val inputValue = inputFile.map(_.split(",")).map(p => Table1(p(0),p(1),p(2).trim.toInt,p(3).trim.toInt)).toDF()
inputValue.registerTempTable("inputValue")
Теперь, скажем, я хочу выполнить следующие два запроса. Как я могу запускать эти запросы параллельно, поскольку они независимы друг от друга. Я чувствую, что если бы я мог запускать их параллельно, это могло бы сократить время выполнения. Прямо сейчас они выполняются серийно.
val primaryDestValues = sqlContext.sql("SELECT distinct destIp FROM inputValue")
primaryDestValues.registerTempTable("primaryDestValues")
val primarySrcValues = sqlContext.sql("SELECT distinct srcIp FROM inputValue")
primarySrcValues.registerTempTable("primarySrcValues")
primaryDestValues.join(primarySrcValues, $"destIp" === $"srcIp").select($"destIp",$"srcIp").show(