У меня есть искровое задание, которое берет файл с 8 записями из hdfs, делает простой агрегат и сохраняет его обратно в Hadoop. Я замечаю, что, когда я это делаю, есть сотни задач.
Я также не уверен, почему для этого есть несколько заданий? Я думал, что работа больше похожа, когда произошло действие. Я могу рассказать о том, почему, но я понял, что внутри этого кода это должно быть одно задание, и оно должно быть разбито на этапы, а не на несколько заданий. Почему он просто не разбивает его на этапы, как он перерывы на работу?
Что касается задач с 200 плюс, поскольку объем данных и количество узлов минимальны, не имеет смысла, что для каждой строки данных существует как 25 задач, когда есть только одна совокупность и пара фильтров. Почему у него просто одна задача для каждого раздела на атомную операцию?
Вот соответствующий код scala -
import org.apache.spark.sql._
import org.apache.spark.sql.types._
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object TestProj {object TestProj {
def main(args: Array[String]) {
/* set the application name in the SparkConf object */
val appConf = new SparkConf().setAppName("Test Proj")
/* env settings that I don't need to set in REPL*/
val sc = new SparkContext(appConf)
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
val rdd1 = sc.textFile("hdfs://node002:8020/flat_files/miscellaneous/ex.txt")
/*the below rdd will have schema defined in Record class*/
val rddCase = sc.textFile("hdfs://node002:8020/flat_files/miscellaneous/ex.txt")
.map(x=>x.split(" ")) //file record into array of strings based spaces
.map(x=>Record(
x(0).toInt,
x(1).asInstanceOf[String],
x(2).asInstanceOf[String],
x(3).toInt
))
/* the below dataframe groups on first letter of first name and counts it*/
val aggDF = rddCase.toDF()
.groupBy($"firstName".substr(1,1).alias("firstLetter"))
.count
.orderBy($"firstLetter")
/* save to hdfs*/
aggDF.write.format("parquet").mode("append").save("/raw/miscellaneous/ex_out_agg")
}
case class Record(id: Int
, firstName: String
, lastName: String
, quantity:Int)
}
Ниже показан снимок экрана после нажатия на приложение
Ниже показаны этапы, показывающие при просмотре конкретного "задания" id 0
Ниже приведена первая часть экрана при нажатии на сцену с более чем 200 заданиями.
Это вторая часть экрана внутри сцены
Ниже после нажатия на вкладку "Исполнители"
В соответствии с запросом, вот этапы для Идентификатора задания 1
Вот подробности для этапа в ID задания 1 с 200 заданиями