/ / Scala Build fallendo? - scala, apache-spark

Scala Build fallendo? - scala, apache-spark

Sono nuovo di scala quando Iam sta cercando di eseguire l'aggiornamento sbt che sto ottenendo

[error] /home/workspace/Scala/SparkTwitterStreaming/project/project/build.scala:1: expected class or object definition
[error] name := "SparkTwitterStreaming"
[error] ^
[error] /home/workspace/Scala/SparkTwitterStreaming/project/project/build.scala:2: expected class or object definition
[error] version := "1.0"
[error] ^
[error] /home/workspace/Scala/SparkTwitterStreaming/project/project/build.scala:3: expected class or object definition
[error] scalaVersion := "2.11.6"
[error] ^
[error] /home/workspace/Scala/SparkTwitterStreaming/project/project/build.scala:5: expected class or object definition
[error] libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "1.6.2"
[error] ^
[error] /home/workspace/Scala/SparkTwitterStreaming/project/project/build.scala:6: expected class or object definition
[error] libraryDependencies += "com.typesafe" % "config" % "1.3.0"
[error] ^
[error] 5 errors found

build.scala / build.sbt ??

name := "SparkTwitterStreaming"

version := "1.0"

scalaVersion := "2.11.6"

libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "1.6.2"

libraryDependencies += "com.typesafe" % "config" % "1.3.0"

risposte:

1 per risposta № 1

Sembra che tu stia confondendo .scala e .sbt File. SBT consente di definire la build in due modi diversi. .scala i file sono, beh, normali file Scala, quindi non possono avere il codice (e name := "SparkTwitterStreaming" ecc. in SBT sono solo codice Scala) al massimo livello, deve essere all'interno di un tratto / classe / oggetto. SBT si occupa di avvolgere .sbt file in questo modo.

SparkTwitterStreaming/project/project/build.scala sembra anche sbagliato: lì siamo casi in SBT quando si utilizza un file sotto project/project, ma questo non è uno di quelli. Probabilmente vuoi spostare questo file in SparkTwitterStreaming/build.sbt.


2 per risposta № 2

Quindi in pratica ... un progetto sbt minim minimale ha una struttura simile a quella seguente,

YourProject
├── build.sbt
└── src
└── main
└── scala
└── Main.scala

E un progetto un po 'più dettagliato sarà così,

SparkTwitterStreaming
├── build.sbt
├── project
│   ├── build.properties
│   └── plugins.sbt
└── src
└── main
└── scala
└── YouCode.scala

E un minimo build.sbt sembra,

name := "SparkTwitterStreaming"

version := "1.0"

scalaVersion := "2.11.6"

libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "1.6.2"

libraryDependencies += "com.typesafe" % "config" % "1.3.0"

Ora alcune persone amano usare build.scala invece di build.sbt, in tal caso questo build.scala dovrebbe essere posizionato all'interno SparkTwitterStreaming/project directory.

SparkTwitterStreaming
├── project
│   ├── build.properties
│   ├── plugins.sbt
│   └── build.scala
└── src
└── main
└── scala
└── YouCode.scala

Inoltre, per sopra build.sbt, l'equivalente build.scala sembrerà,

import sbt._
import Keys._

object MyBuild extends Build {   // <--- here MyBuild can be renamed to anything
// if you needed extra resolvers
val pResolvers = Seq(
"Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
)

val pDependencies = Seq(
"org.apache.spark" % "spark-core_2.11" % "1.6.2",
"com.typesafe" % "config" % "1.3.0"
)

val pBuildSettings = Seq (
name := "SparkTwitterStreaming",
version := "1.0",
scalaVersion := "2.11.6",
resolvers ++= pResolvers,
libraryDependencies ++= pDependencies
)

lazy val root = project.in(file(".")).settings(pBuildSettings)
}