2014-12-30 3 views
5

Я пытался настроить проект Maven, который будет содержать пользовательские функции (UDF), которые я хотел бы использовать в своих запросах Hive. Я начал с проекта Maven, не содержащий исходные файлы, а в следующем POM:Hive 0.14 UDF Maven Project Отсутствует Зависимости

<?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> 

Когда я пытался построить проект, я получаю следующее сообщение об ошибке:

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]

ответ

3

Я нашел calcite-core-incubating jar в maven (но не версия инкубационного моментального снимка), требуемая зависимостью hive-exec 0.14.0.

Добавление сердечника из кальцита из центрального центра избавило от первоначальной ошибки и ввело новую отсутствующую зависимость «pentaho-aggdesigner-algorithm», которую я нашел на ConJars.

Добавления и зависимости Pentaho conjars repo сделал новую недостающее зависимость появляется «org.apache.calcite: кальцит-avatica: банка: 0.9.2-Инкубация-SNAPSHOT», чьи инкубации (но не снимок) зависимость была available in the maven central repo.

Добавление зависимостей calcite-avatica к POM заставило проект успешно завершить проект.

Вот окончательный ПОМ необходимо, чтобы сделать проект, предназначенный для улья UDF, строить:

<?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> 

После пустой проект построен, я попытался интегрировать настройки POM в больший существующий проект Maven и увидел ошибки о кальцита -core специально ищет версию моментального снимка. Чтобы обойти это, я изменил улей-Exec зависимость, чтобы выглядеть следующим образом:

<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

я явно включал кальцит-ядро и кальцит-avatica проекты как зависимости, и мой проект (который также включает в себя Улей 14 зависимостей), больше не удалось с «артефактов не может быть решена ошибка»

<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> 

Из того, что я могу сказать, это открытый вопрос с улья 14. См https://issues.apache.org/jira/browse/HIVE-8906 для получения дополнительной информации.

0

Я решить ту же проблему, добавив ниже зависимостей в /ql/pom.xml org.pentaho Pentaho-aggdesigner-алгоритм 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> 

и ниже хранилище к/pom.xml под позициями

<repository> 
     <id>conjars</id> 
     <name>Concurrent Conjars repository</name> 
     <url>http://conjars.org/repo</url> 
     <layout>default</layout> 
    </repository> 
Смежные вопросы