【问题标题】:How to write a java class with main method to forward to my scala code?如何使用 main 方法编写一个 java 类来转发到我的 scala 代码?
【发布时间】:2019-11-20 20:06:00
【问题描述】:

让我先说我不太擅长编程。这里我有一个 wordCount Scala 代码,我想作为一个 JAR 文件运行,我需要一个 Java 类和一个 main 方法转发给它。

我已经创建了一个类,但我不确定在哪里以及如何放置它

public class Class{
  object SparkWordCount {
    public static void main(args: Array[String]) {
      val sc = new SparkContext(new SparkConf().setAppName("Spark Count"))
    }
  }
}

我想为我的 Scala 代码创建一个 Java 类并将其作为 JAR 文件运行。

【问题讨论】:

  • 您的 Scala 代码在哪里?那里有你想调用的方法吗?或者,如果它已经打包为 Spark 作业,您可以使用常规工具运行它以提交 Spark 作业吗?
  • 这很不清楚是什么问题。我怀疑答案可能是遵循一些 spark 和 java 入门教程,例如这个(我从许多 Google 搜索结果中随机挑选的)...geekmj.org/insights/java-getting-started-725
  • 您能解释一下为什么要将它称为Java 应用程序而不是Scala 应用程序吗?您要解决的实际问题是什么?
  • 再说一遍,为什么? Scala 应用程序可以托管一个主程序。
  • 而且 Scala 代码可以创建 JAR 文件。听起来你根本不需要 Java。

标签: java scala


【解决方案1】:

考虑使用sbtpackage 你的Scala 应用程序作为JAR 像这样

sbt package

但是,这只会打包您的应用程序的类,而没有依赖项。包含所有内容的包通常称为 fat JARsbt-assembly 是一个 sbt 插件,可以像这样创建此类包

sbt assembly

要创建 Apache Spark fat jar,请尝试探索以下答案 https://stackoverflow.com/a/28498443/5205022

先尝试打包一个简单的 hello world 应用程序,然后再继续构建胖 apache spark jar。比如install sbt,然后执行如下命令

sbt new scala/scala-seed.g8

然后尝试探索在创建的 hello world 应用程序中执行 sbt package 时会发生什么。 jar 包应该在target 目录下结束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2017-06-15
    相关资源
    最近更新 更多