2017-07-01 2 views
1

Ich arbeite durch this Apache Flink training, wo Sie eine einfache Anwendung zum Lesen von Daten aus einer Datei erstellen und filtert. Ich verwende Scala als Sprache der Flink Anwendung zu schreiben, und der endgültige Code sieht wie folgt aus:Wie benennen Sie die GroupID eines importierten Maven-Pakets um, um einen Bindestrich zu entfernen?

package com.dataartisans.flinktraining.exercises.datastream_scala.basics 

import com.dataartisans.flinktraining.exercises.datastream_java.sources.TaxiRideSource 
import com.dataartisans.flinktraining.exercises.datastream_java.utils.GeoUtils 
import org.apache.flink.api.java.utils.ParameterTool 
import org.apache.flink.streaming.api.TimeCharacteristic 
import org.apache.flink.streaming.api.scala._ 

object RideCleansing { 

    def main(args: Array[String]) { 

    val params = ParameterTool.fromArgs(args) 
    val input = params.getRequired("input") 

    val maxDelay = 60 
    val speed = 600 

    val env = StreamExecutionEnvironment.getExecutionEnvironment 
    env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime) 

    val rides = env.addSource(new TaxiRideSource(input, maxDelay, speed)) 

    val filteredRides = rides 
     .filter(r => GeoUtils.isInNYC(r.startLon, r.startLat) && GeoUtils.isInNYC(r.endLon, r.endLat)) 

    filteredRides.print() 
    env.execute("Taxi Ride Cleansing") 
    } 

} 

Als here empfohlen, ich habe folgendes meine POM-Datei hinzugefügt:

<dependency> 
    <groupId>com.data-artisans</groupId> 
    <artifactId>flink-training-exercises</artifactId> 
    <version>0.10.0</version> 
</dependency> 

wenn ich tippe maven clean package jedoch bekomme ich folgende Fehlermeldung:

error: object dataartisans is not a member of package com 
import com.dataartisans.flinktraining.exercises.datastream_java.sources.TaxiRideSource 

es scheint, für das Paket zu suchen com.dataartisans, aber es war im portiert als com.data-artisans mit einem Bindestrich, so dass es nicht gefunden werden kann. Wie behebe ich dieses Problem, wenn meine Haupt-IDE IntelliJ ist?

Hier ist die Ausgabe vom package Befehl:

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Flink Quickstart Job 0.1 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ flink-scala-project --- 
[INFO] Deleting /da-flink/target 
[INFO] 
[INFO] --- build-helper-maven-plugin:1.7:add-source (add-source) @ flink-scala-project --- 
[INFO] Source directory: /da-flink/src/main/scala added. 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ flink-scala-project --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 6 resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ flink-scala-project --- 
[INFO] Nothing to compile - all classes are up to date 
[INFO] 
[INFO] --- scala-maven-plugin:3.2.2:compile (default) @ flink-scala-project --- 
[WARNING] Expected all dependencies to require Scala version: 2.10.4 
[WARNING] org.scala-lang:scala-reflect:2.10.4 requires scala version: 2.10.4 
[WARNING] org.apache.flink:flink-scala_2.10:1.3.0 requires scala version: 2.10.4 
[WARNING] org.apache.flink:flink-scala_2.10:1.3.0 requires scala version: 2.10.4 
[WARNING] org.scala-lang:scala-compiler:2.10.4 requires scala version: 2.10.4 
[WARNING] org.scalamacros:quasiquotes_2.10:2.0.1 requires scala version: 2.10.4 
[WARNING] org.apache.flink:flink-streaming-scala_2.10:1.3.0 requires scala version: 2.10.4 
[WARNING] org.apache.flink:flink-streaming-scala_2.10:1.3.0 requires scala version: 2.10.4 
[WARNING] org.apache.flink:flink-runtime_2.10:1.3.0 requires scala version: 2.10.4 
[WARNING] com.data-artisans:flakka-actor_2.10:2.3-custom requires scala version: 2.10.4 
[WARNING] com.data-artisans:flakka-remote_2.10:2.3-custom requires scala version: 2.10.4 
[WARNING] com.data-artisans:flakka-slf4j_2.10:2.3-custom requires scala version: 2.10.4 
[WARNING] org.clapper:grizzled-slf4j_2.10:1.0.2 requires scala version: 2.10.3 
[WARNING] Multiple versions of scala libraries detected! 
[INFO] /da-flink/src/main/scala:-1: info: compiling 
[INFO] Compiling 5 source files to /da-flink/target/classes at 1498877506263 
[ERROR] /da-flink/src/main/scala/org/apache/flink/quickstart/RideCleansing.scala:21: error: object dataartisans is not a member of package com 
[ERROR] import com.dataartisans.flinktraining.exercises.datastream_java.sources.TaxiRideSource 
[ERROR]   ^
[ERROR] /da-flink/src/main/scala/org/apache/flink/quickstart/RideCleansing.scala:22: error: object dataartisans is not a member of package com 
[ERROR] import com.dataartisans.flinktraining.exercises.datastream_java.utils.GeoUtils 
[ERROR]   ^
[ERROR] /da-flink/src/main/scala/org/apache/flink/quickstart/RideCleansing.scala:61: error: not found: type TaxiRideSource 
[ERROR]  val rides = env.addSource(new TaxiRideSource(input, maxDelay, servingSpeed)) 
[ERROR]         ^
[ERROR] three errors found 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 4.077 s 
[INFO] Finished at: 2017-06-30T22:51:48-04:00 
[INFO] Final Memory: 15M/309M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile (default) on project flink-scala-project: wrap: org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1) -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

Antwort

2

Die Antwort erwies sich als sehr einfach: Ich legte die Abhängigkeit in den falschen Abschnitt der Pom-Datei, mit einer anderen Gruppe von Abhängigkeiten, die Teil eines Profils waren. Unvorsichtiger Fehler ...

2

groupId, artifactId und version (aka GAV) Maven coordinates sind, die ein Artefakt (jar) wesentlich sind beide (in einem POM) logisch zu identifizieren und physisch (in einem Repository). Dies hat nichts mit Paketen innerhalb des Artefakts oder Importe in den Klassendateien im Artefakt zu tun. GAV gibt es, um von einem Repository auf sie zuzugreifen, um einen korrekten Klassenpfad aufzubauen. So "aber es wurde als com.data-artisans importiert" ist keine korrekte Aussage in dieser Hinsicht. Daher muss das Problem irgendwo anders sein als in Maven.

BTW, bei welcher Build-Phase tritt der Fehler auf? Ich denke, es ist compile, oder? Das Liefern von mehr verwandten Zeilen der Build-Ausgabe macht normalerweise die Dinge klarer.

Woher haben Sie die Version 0.10.0? Es ist nicht verfügbar unter Maven Central. Ich schlage vor, Version 0.6 von dort einen Versuch zu geben.

+0

Danke für die Klarstellung - ich fügte die Ausgabe oben hinzu. 0.10.0 stammt von der Anleitung selbst, aber vielleicht ist das falsch? https://dataartisans.github.io/flink-training/devEnvSetup.html – Brideau

+0

Als Teil des Setups mussten wir das Projekt direkt von GitHub herunterladen und installieren, und diese Version sieht wie folgt aus: 0.10.0: https: // github.com/dataArtisans/flink-training-exercises/blob/master/pom.xml – Brideau

+0

@Brideau Wenn ich auf die '/ https://oss.sonatype.org/service/local/staging/deploy/maven2/ 'von dort in meinem Browser bekomme ich:" _Access Denied - Bitte loggen Sie sich bevor Sie weitere Anfragen versuchen ._ ". –

Verwandte Themen