我有一個ECS任務被配置為運行spark-submit到EMR Cluster。spark-submit被配置為Yarn Cluster模式。
java.lang.RuntimeException: java.lang.ClassNotFoundException: 未找到 com.amazon.ws.emr.hadoop.fs.EmrFileSystem 類。
在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2195)
在 org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2654)
在 org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
at com.databricks.spark.redhift.Utils$.assertThatFileSystemIsNotS3BlockFileSystem(Utils.scala:162)
at com.databricks.spark.redhift.RedshiftWriter.saveToRedshift(RedshiftWriter.scala:386)
at com.databricks.spark.redhift.DefaultSource.createRelation(DefaultSource.scala:108)
at org.apache.spark.sql.execution.datasources.SaveIntoDataSourceCommand.run(SaveIntoDataSourceCommand.scala:45)
...
我懷疑是因為 "spark.yarn.jars "沒有被設定,所以它把我的遠程服務器的$SPARK_HOME庫推了過來,它缺少com.amazon.ws.emr.hadoop.fs.EmrFileSystem的jars.
因此,在我把 EMR 的主節點的 /usr/lib/spark/jars/*.jar 拷貝過來之后,我還試圖設定 "spark.yarn.jars=hdfs://nodename:8020/user/spark/jars/*.jar" 。然后它出錯了:
java.io.InvalidClassException: org.apache.spark.sql.execution.SparkPlan; local class incompatible: stream classdesc serialVersionUID = -7931627949087445875, local class serialVersionUID = -5425351703039338847
我認為遠程客戶端的jars和EMR的集群的jars之間可能存在不匹配的情況。但它們都是2.4.7的版本。
誰有什么聰明的辦法讓我的流式火花-提交作業在EMR作為yarn客戶端模式下作業?
uj5u.com熱心網友回復:
二進制檔案需要與EMR Cluster中的相同。
這個資源幫助我解決了這個問題。 https://docs.dominodatalab.com/en/4.5.2/reference/spark/external_spark/Connecting_to_an_Amazon_EMR_cluster_from_Domino.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/318978.html
標籤:
