在scala中创建项目jar

时间:2016-12-17 22:44:54

标签: scala apache-spark sbt

我在SBT中有一个独立的应用程序。我的数据存储在HDFS(hadoop文件系统)上。如何获取jar文件以在另一台机器上运行我的工作。

我的项目目录如下:

/MyProject
   /target
        /scala-2.11
                 /MyApp_2.11-1.0.jar
   /src
      /main
           /scala

2 个答案:

答案 0 :(得分:3)

如果您没有任何依赖关系,那么运行$SPARK_HOME/bin/spark-submit --name "an-app" my-app.jar 会为您的所有代码创建一个jar。

然后您可以将Spark应用程序运行为:

sbt assembly

如果您的项目具有外部依赖性(除了spark本身;如果它只是Spark或其任何依赖项,那么上述方法仍然有效),那么您有两个选择:

1)使用sbt assembly插件创建一个包含整个类路径的超级jar。运行$SPARK_HOME/bin/spark-submit --name "an-app" --packages "joda-time:joda-time:2.9.6" my-app.jar 将创建另一个jar,您可以像以前一样使用它。

2)如果你只有很少的简单依赖(比如joda-time),那么你可以简单地将它们包含在你的spark-submit脚本中。

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: jenkins-master
spec:
  replicas: 1
  template:
    metadata:
      name: jenkins-master
      labels:
        name: jenkins-master
    spec:
      containers:
      - name: jenkins-master
        image: myregistry.azurecr.io/infrastructure/jenkins-master:1.0.0
        imagePullPolicy: Always
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 20
          timeoutSeconds: 5
        ports:
        - name: jenkins-web
          containerPort: 8080
        - name: jenkins-agent
          containerPort: 50000

答案 1 :(得分:1)

与Java不同,在Scala中,文件的包名称不必与目录名称匹配。事实上,对于像这样的简单测试, 如果您愿意,可以将此文件放在SBT项目的根目录中。

从项目的根目录,您可以编译项目:

$ sbt编译 运行项目:

$ sbt run 打包项目:

$ sbt package

以下链接了解: http://alvinalexander.com/scala/sbt-how-to-compile-run-package-scala-project