Я запускаю искровое задание на EMR, но мои сообщения журнала не записываются в журналы. Я ожидаю, что мои сообщения в журнале будут смешаны с сообщениями журнала искробезопасности, как это происходит, когда я запускаю работу с хаопом. Когда я выполняю свою работу локально, мои сообщения журнала печатаются, как ожидалось, в остальной части выходных данных журнала.Сообщения журнала приложений Spark не отображаются в журналах EMR
Я попытался следующие, которые не работают:
import org.slf4j.LoggerFactory ... val logger = LoggerFactory.getLogger(MyPoc.getClass()) logger.info("message here")
и
import org.apache.log4j.Logger ... val logger = Logger.getRootLogger() logger.info("message here")
и
import org.apache.spark.Logging object MyPoc extends App with Logging { ... logInfo("message here") ... }
Как я могу ж сообщения журнала обхода в файлы журнала из искрового задания, работающего на ЭМИ?
Я запускает свою работу следующим образом:
aws emr create-cluster --name EMR-Spark-PoC --ami-version 3.3.1 \ --instance-type=m1.medium --instance-count 2 \ --ec2-attributes KeyName=key-dev,InstanceProfile=EMRJobflowDefault \ --log-uri s3://my-logs/emr/ \ --bootstrap-action Name=Spark,Path=s3://support.elasticmapreduce/spark/install-spark,Args=[-x] \ --steps Name=SparkPoC,Jar=s3://eu-west-1.elasticmapreduce/libs/script-runner/script-runner.jar,Args=[/home/hadoop/spark/bin/spark-submit,--deploy-mode,cluster,--master,yarn-cluster,--class,my.poc.EmrPoc,s3://my-dev/poc-0.0.1.jar,s3n://my-data/avro/part-m-00000.avro,s3n://my-data/avro/part-m-00000.avro] \ --no-auto-terminate
Я построил толстую банку, используя сборку. Вот большинство моих build.sbt:
libraryDependencies ++= Seq(
"org.apache.hadoop" % "hadoop-client" % "2.2.0" % "provided",
"org.apache.spark" %% "spark-core" % "1.2.0" % "provided",
"org.apache.spark" %% "spark-sql" % "1.2.0",
"com.databricks" %% "spark-avro" % "0.1"
)
assemblyMergeStrategy in assembly := {
case x if x.endsWith(".class") => MergeStrategy.last
case x if x.endsWith(".properties") => MergeStrategy.last
case x if x.contains("/resources/") => MergeStrategy.last
case x if x.startsWith("META-INF/mailcap") => MergeStrategy.last
case x if x.startsWith("META-INF/mimetypes.default") => MergeStrategy.first
case x if x.startsWith("META-INF/maven/org.slf4j/slf4j-api/pom.") => MergeStrategy.first
case x =>
val oldStrategy = (assemblyMergeStrategy in assembly).value
if (oldStrategy == MergeStrategy.deduplicate)
MergeStrategy.first
else
oldStrategy(x)
}
assemblyExcludedJars in assembly := {
val cp = (fullClasspath in assembly).value
cp filter {_.data.getName == "avro-ipc-1.7.7-tests.jar"}
}
Вы работаете на YARN? Как вы запускаете кластер и отправляете свою работу? –
Я использую инструкции в разделе «Пример команды AWS CLI, которая создает кластер, запускает приложение Spark, а затем завершает» на этой странице https://forums.aws.amazon.com/thread. jspa? threadID = 126682 & tstart = 0 – jbrown
Считаете ли вы, что моя стратегия слияния для slf4j-api/pom может быть виновата? – jbrown