如何在连接到现有Spark群集时添加类或jar?

时间:2018-06-06 21:37:55

标签: java scala apache-spark anonymous-function

我正在编写一个程序来访问Spark集群作为客户端。它连接如下:

val sc = new SparkContext(new SparkConf(loadDefaults = false)
  .setMaster(sparkMasterEndpoint)
  .setAppName("foo")
  .set("spark.cassandra.connection.host", cassandraHost)

  .setJars(Seq("target/scala-2.11/foo_2.11-1.0.jar"))
)

然后使用该上下文在Spark上运行操作。但是,我在代码中使用的任何lambdas /匿名函数都无法在Spark上运行。例如,我可能有:

val groupsDescription = sc.someRDD()
  .groupBy(x => x.getSomeString())
  .map(x => x._1 + " " + x._2.count(_ => true))

这会返回一个延迟评估的RDD,但是当我尝试从该RDD中提取一些值时,我从Spark中得到了这个异常:

java.lang.ClassNotFoundException: my.app.Main$$anonfun$groupify$1$$anonfun$2$$anonfun$apply$1

即使我已将我的应用程序的jar文件提供给Spark。我甚至看到一个日志行(在我的应用程序中,而不是在我的spark集群中)告诉我jar已经像这样上传了:

[info] o.a.s.SparkContext - Added JAR target/scala-2.11/foo_2.11-1.0.jar at spark://192.168.51.15:53575/jars/foo_2.11-1.0.jar with timestamp 1528320841157

我可以在任何地方找到关于这个主题的绝对没事,这让我发疯了!没有其他人参与这个问题?我看到的所有相关结果都是关于捆绑你的jar用于spark-submit这不是我正在做的事情,我有一个独立的应用程序,它连接到一个独立的火花群集。这根本不受支持吗?我还能错过什么?还有什么可能导致这个?

0 个答案:

没有答案