我正在尝试设置一个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]
答案 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>