通过Intellij / Eclipse运行java / scala程序和运行jar有什么区别

时间:2018-04-03 13:15:37

标签: scala apache-spark spark-streaming

如果我“运行为”scala程序,我的代码工作正常但是当我创建一个jar文件并运行它时会出现一些问题。

任何人都可以指导我如何解决问题。它是连接到kafka服务的火花流代码。

object Test {

  def main(args: Array[String]): Unit = {

    val batchInterval = 5

    val conf = new SparkConf()
      .setAppName("test")
      .setMaster("local[2]")
      .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")

    val sc = new SparkContext(conf)
    sc.setLogLevel("ERROR")

    val ssc = new StreamingContext(sc, Seconds(batchInterval))

    ssc.receiverStream(
      ReceiverFactory.createReceiver(
          "host-name",
          "end-point",
          "stream-name",
          classOf[JsonNode],
          batchInterval
        )
      )
      .map(_.getPayload.toString)
      .foreachRDD(rdd => println("*** getting a count of RDD " + rdd.count()))


    ssc.start()
    ssc.awaitTermination
  }
}

1 个答案:

答案 0 :(得分:0)

我猜你在寻找一个肥胖的罐子。

在IDE中“运行为”将为执行的jvm进程设置类路径和其他一些选项。

胖jar会将所有类文件和依赖项打包到一个jar文件中,该文件能够用“java -jar FAT.jar”执行

我知道这个案子的两个好包装

SBT-Assembly - https://github.com/sbt/sbt-assembly

SBT Native Packager - https://github.com/sbt/sbt-native-packager

我希望能回答你的问题