Hive 0.14 UDF Maven项目缺少依赖性

时间:2014-12-30 17:45:02

标签: maven hive apache-calcite

我正在尝试设置一个Maven项目,该项目将包含我想在Hive查询中使用的用户定义函数(UDF)。我开始使用不包含源文件的Maven项目,以及以下POM:

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

当我尝试构建项目时,出现以下错误:

  

无法在项目HiveUdfTestProject上执行目标:无法执行   解决项目的依赖关系   exp:HiveUdfTestProject:jar:1.0-SNAPSHOT:以下工件可以   没有解决:   org.apache.calcite:方解石芯中:jar:0.9.2 - 孵化 - 快照   org.apache.calcite:方解石avatica中:jar:0.9.2 - 孵化 - 快照:   找不到神器   org.apache.calcite:calcite-core:jar:0.9.2-incubating-SNAPSHOT - &gt; [救命   1]

3 个答案:

答案 0 :(得分:3)

我在hive-exec 0.14.0依赖项所需的maven中央存储库(但不是孵化快照版本)中找到了calcite-core-incubating jar

从maven中心添加方解石核心摆脱了原始错误,并引入了一个新的遗漏依赖“pentaho-aggdesigner-algorithm”,我在ConJars找到了它。

添加conjars repo和pentaho依赖关系使得一个新的缺失依赖项出现“org.apache.calcite:calcite-avatica:jar:0.9.2-incubating-SNAPSHOT”其孵化(但不是快照)依赖性是available in the maven central repo

将方解石 - avatica依赖项添加到POM使得最终成功构建了空项目。

以下是制作用于Hive UDF构建的项目所需的最终POM:

<?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项目中,并看到有关calcite-core的错误,专门寻找快照版本。为了解决这个问题,我将hive-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>

答案 1 :(得分:2)

我明确地将方解石核心和方解石 - avatica项目作为依赖项包括在内,而我的项目(其中还包括Hive 14依赖项)不再失败,因为&#39;工件无法解决错误&#39; < / p>

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

据我所知,这是Hive 14的一个未解决的问题。有关详细信息,请参阅https://issues.apache.org/jira/browse/HIVE-8906

答案 2 :(得分: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>

以及在positories下的/pom.xml下的存储库

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