2014-12-30 14 views
5

Stavo cercando di impostare un progetto Maven che conterrà funzioni definite dall'utente (UDF) che vorrei utilizzare nelle mie query Hive. Ho iniziato con un progetto Maven che non contiene i file di origine, e la seguente POM:Hive 0.14 Progetto Maven UDF mancante Dipendenze

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>exp</groupId> 
    <artifactId>HiveUdfTestProject</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.7</maven.compiler.source> 
     <maven.compiler.target>1.7</maven.compiler.target> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.hive</groupId> 
      <artifactId>hive-exec</artifactId> 
      <version>0.14.0</version> 
     </dependency> 
    </dependencies> 
</project> 

Quando ho provato a costruire il progetto, ottengo il seguente errore:

Failed to execute goal on project HiveUdfTestProject: Could not resolve dependencies for project exp:HiveUdfTestProject:jar:1.0-SNAPSHOT: The following artifacts could not be resolved: org.apache.calcite:calcite-core:jar:0.9.2-incubating-SNAPSHOT, org.apache.calcite:calcite-avatica:jar:0.9.2-incubating-SNAPSHOT: Could not find artifact org.apache.calcite:calcite-core:jar:0.9.2-incubating-SNAPSHOT -> [Help 1]

risposta

3

ho trovato il calcite-core-incubating jar nel repository centrale di maven (ma non la versione di snapshot di incubazione) richiesta dalla dipendenza di hive-exec 0.14.0.

L'aggiunta di calcite-core da parte di maven central ha eliminato l'errore originale e ha introdotto una nuova dipendenza "pentaho-aggdesigner-algorithm" che ho trovato su ConJars.

Aggiunta 'e la dipendenza conjars repo pentaho fatto una nuova dipendenza mancante appare "org.apache.calcite: calcite-avatica: jar: 0.9.2-incubazione-SNAPSHOT" la cui incubazione (ma non istantanea) da dipendere era available in the maven central repo.

L'aggiunta della dipendenza calcite-avatica al POM ha finalmente completato la creazione del progetto vuoto.

Ecco il POM finale necessario per realizzare un progetto destinato a Hive UDF costruire:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>exp</groupId> 
    <artifactId>HiveUdfTestProject</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.7</maven.compiler.source> 
     <maven.compiler.target>1.7</maven.compiler.target> 
    </properties> 
    <repositories> 
     <repository> 
      <id>conjars.org</id> 
      <url>http://conjars.org/repo</url> 
     </repository> 
    </repositories> 
    <dependencies> 
     <!-- From Maven Central --> 
     <dependency> 
      <groupId>org.apache.hive</groupId> 
      <artifactId>hive-exec</artifactId> 
      <version>0.14.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.calcite</groupId> 
      <artifactId>calcite-core</artifactId> 
      <version>0.9.2-incubating</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.calcite</groupId> 
      <artifactId>calcite-avatica</artifactId> 
      <version>0.9.2-incubating</version> 
     </dependency> 

     <!-- From conjars --> 
     <dependency> 
      <groupId>org.pentaho</groupId> 
      <artifactId>pentaho-aggdesigner-algorithm</artifactId> 
      <version>5.1.3-jhyde</version> 
     </dependency> 
    </dependencies> 
</project> 

Una volta che il progetto vuoto costruito, ho provato integrando le impostazioni POM in un più ampio progetto Maven esistente e ha visto gli errori circa la calcite -core in particolare alla ricerca della versione istantanea. Per superare questo, ho cambiato la dipendenza alveare-exec di simile a questa:

<dependency> 
    <groupId>org.apache.hive</groupId> 
    <artifactId>hive-exec</artifactId> 
    <version>0.14.0</version> 
    <exclusions> 
     <exclusion> 
      <groupId>org.apache.calcite</groupId> 
      <artifactId>*</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
2

ho incluso esplicitamente i progetti di calcite-core e calcite-avatica come dipendenze, e il mio progetto (che comprende anche le Hive 14 dipendenze), non è più venuto a mancare con i 'manufatti non può essere risolto errore'

<dependency> 
      <groupId>org.apache.calcite</groupId> 
      <artifactId>calcite-core</artifactId> 
      <version>1.0.0-incubating</version> 
    </dependency> 
    <dependency> 
      <groupId>org.apache.calcite</groupId> 
      <artifactId>calcite-avatica</artifactId> 
      <version>1.0.0-incubating</version> 
    </dependency> 

Da quello che posso dire, questo è un problema aperto con Hive 14. Vedi https://issues.apache.org/jira/browse/HIVE-8906 per maggiori informazioni.

0

ho risolto lo stesso problema aggiungendo sotto le dipendenze di /ql/pom.xml org.pentaho Pentaho-aggdesigner-algoritmo 5.1.3-jhyde

<dependency> 
    <groupId>eigenbase</groupId> 
    <artifactId>eigenbase-properties</artifactId> 
    <version>1.1.4</version> 
</dependency> 

<dependency> 
    <groupId>net.hydromatic</groupId> 
    <artifactId>linq4j</artifactId> 
    <version>0.4</version> 
</dependency> 

e sotto repository a /pom.xml sotto le posizioni

<repository> 
     <id>conjars</id> 
     <name>Concurrent Conjars repository</name> 
     <url>http://conjars.org/repo</url> 
     <layout>default</layout> 
    </repository> 
Problemi correlati