Я новичок в Scala и Spark, и в настоящее время работаю над проектом Scala Spark Job, меня разочаровало одно: я не знаю, как отлаживать код в IntelliJ, как я делал с Java.
после того, как я импортировал проект scala, я заметил одну вещь: папка spark-jobs не была помечена как папка с исходным кодом, хотя некоторые другие подпапки в том же модуле продаются как папка с исходным кодом.
-- utility (marked as source code folder)
-- event-sender (marked as source code folder)
-- spark-jobs (not marked as source code folder)
-- src
--main
-- resources
-- scala
-- com
-- example
-- spark
-- jobs
, когда я проверил задание на искру, над которым я работаю, основного метода не существует.
class DailyExport(
env: String,
)(implicit sc: SparkContext, sqlContext: SQLContext, logger: SparkJobLogger)
extends JobAudit
with PartitionedWriter {
def run(): Unit = ...
object DailyExport extends App with SparkJobParameters {
{
for {
env <- getStringParameter("environment", 0, args)
} yield {
val jobConfig = SparkJobConfig.fromConfig.exportConfig
...
new DailyExport(
jobConfig = jobConfig
).run()
}
}.fold(
error => {
println(s"Some provided parameters are wrong: $error")
sys.exit(-1)
},
identity
)
}
, однако есть основной метод, определенный в 'App'
trait App extends DelayedInit {
...
@deprecatedOverriding("main should not be overridden", "2.11.0")
def main(args: Array[String]) = {
this._args = args
for (proc <- initCode) proc()
if (util.Properties.propIsSet("scala.time")) {
val total = currentTime - executionStart
Console.println("[total " + total + "ms]")
}
}
затем я щелкнул правой кнопкой мыши на задании, над которым я работаю, и выбрал «Выполнить ..», он пожаловался
'Error: Could not find or load main class com.exmaple.spark.jobs.DailyExport'
, это так сильно отличается от Java, может кто-нибудь сказать мне, какотладить это?