Как исправить 'java.lang.NoSuchMethodError: scala.collection.immutable. $ Colon $ colon.hd $ 1 () Ljava / lang / Object' - PullRequest
1 голос
/ 18 октября 2019

Итак, я начал писать свой собственный рабочий процесс Oozie, который содержит действие Apache Spark, и дело в том, что даже при том, что я явно упаковал свой исходный код sbt с помощью Scala 2.11.8 и Spark 2.3.0, пряжа говорит:

java.lang.NoSuchMethodError: scala.collection.immutable. $ Colon $ colon.hd $ 1 () Ljava / lang / Object;

Существует док-контейнер, содержащий Hortonworks HDP Sandboxработает на машине ec2 с 16-ядерным процессором и 41 гигабайтами памяти. Я уже обновил разделяемую библиотеку Oozie с помощью командной строки. Ниже приведены мой файл job.properties и файл workflow.xml.

job.properties

jobTracker=sandbox-hdp.hortonworks.com:8032
master=yarn-cluster
oozie.action.sharelib.for.spark=spark2
oozie.action.sharelib.for.spark.exclusion=oozie/jackson
# Time and schedule details
start_date=2015-01-01T00:00Z
end_date=2015-06-30T00:00Z
frequency=55 23 L * ?
nameNode=hdfs://sandbox-hdp.hortonworks.com:8020
# Workflow to run
wf_application_path=hdfs://sandbox-hdp.hortonworks.com:8020/user/hue/learn_oozie/ch08/spark_rainfall
# Coordinator to run
oozie.coord.application.path=hdfs://sandbox-hdp.hortonworks.com:8020/user/hue/learn_oozie/ch08/spark_rainfall
# Datasets
data_definitions=hdfs://sandbox-hdp.hortonworks.com:8020/user/hue/learn_oozie/ch08/datasets/datasets.xml
# Controls
timeout=10
concurrency_level=1
execution_order=FIFO
materialization_throttle=1

workflow.xml

<workflow-app name="ch08_spark_max_rainfall" xmlns="uri:oozie:workflow:0.5">

    <start to="max_rainfall"/>

    <action name="max_rainfall">
        <spark xmlns="uri:oozie:spark-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <master>${master}</master>
            <name>"Spark Ch08 Max Rain Calculator"</name>
            <class>life.jugnu.learnoozie.ch08.MaxRainfall</class>
            <jar>hdfs://sandbox-hdp.hortonworks.com:8020/user/hue/learn_oozie/ch08/rainbow/target/scala-2.11/rainbow_2.11-1.0.14.jar</jar>
            <spark-opts>
                --conf spark.yarn.historyServer.address=http://sandbox-hdp.hortonworks.com:18088
                --conf spark.eventLog.dir=hdfs://sandbox-hdp.hortonworks.com:8020/user/spark/applicationHistory
                --conf spark.eventLog.enabled=true
            </spark-opts>
            <arg>${input}</arg>
            <arg>${output}</arg>
        </spark>
        <ok to="End"/>
        <error to="Kill"/>
    </action>

    <kill name="Kill">
        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>

    <end name="End"/>
</workflow-app>

Я ожидаю, что этот рабочий процесс запустится без проблем, и запишу результат на HDFS в удаленном кластере, ноискра была убита с сообщением об ошибке ниже.

Исключение в потоке "main" java.lang.NoSuchMethodError: scala.collection.immutable. $ colon $ colon.hd $ 1 () Ljava / lang / Object;в org.apache.spark.deploy.yarn.ApplicationMasterArguments.parseArgs (ApplicationMasterArguments.scala: 45) в org.apache.spark.deploy.yarn.ApplicationMasterArguments. (ApplicationMasterArguments.scala: 34) в org.apache.spark.deploy. yarn.ApplicationMaster $ .main (ApplicationMaster.scala: 576) в org.apache.spark.deploy.yarn.ApplicationMaster.main (ApplicationMaster.scala)

...