2014-12-30 19 views
5

Tôi đã cố gắng thiết lập dự án Maven sẽ chứa các hàm do người dùng định nghĩa (UDF) mà tôi muốn sử dụng trong truy vấn Hive của mình. Tôi bắt đầu với một dự án Maven không chứa file nguồn, và POM sau:Hive 0,14 UDF Dự án Maven Thiếu phụ thuộc

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

Khi tôi cố gắng xây dựng dự án, tôi nhận được lỗi sau:

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]

Trả lời

3

Tôi tìm thấy calcite-core-incubating jar trong kho lưu trữ trung tâm maven (nhưng không phải là phiên bản chụp nhanh) được yêu cầu bởi phụ thuộc hive-exec 0.14.0.

Việc thêm lõi canxit từ trung tâm maven đã loại bỏ lỗi ban đầu và giới thiệu phụ thuộc mất tích mới "pentaho-aggdesigner-algorithm" mà tôi tìm thấy trên ConJars.

Thêm và phụ thuộc conjars repo Pentaho làm một sự phụ thuộc mất tích mới xuất hiện "org.apache.calcite: canxit-avatica: jar: 0.9.2-ấp-SNAPSHOT" mà ấp (nhưng không phải ảnh chụp) phụ thuộc là available in the maven central repo.

Việc thêm phụ thuộc canxit-avatica vào POM làm cho dự án trống xây dựng thành công sau cùng.

Đây là POM thức cần thiết để thực hiện một dự án dành cho Hive UDFs xây dựng:

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

Khi dự án có sản phẩm nào được xây dựng, tôi đã cố gắng tích hợp các thiết lập POM vào một dự án Maven hiện lớn hơn và thấy lỗi về canxit -core đặc biệt tìm phiên bản ảnh chụp nhanh. Để vượt qua điều này, tôi đã thay đổi phụ thuộc hive-exec trông như thế này:

<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

tôi một cách rõ ràng bao gồm các dự án canxit-core và canxit-avatica như phụ thuộc, và dự án của tôi (mà cũng bao gồm các Hive 14 phụ thuộc), không còn thất bại với các 'hiện vật không thể được giải quyết lỗi'

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

Từ những gì tôi có thể nói, đây là một vấn đề mở với Hive 14. Xem https://issues.apache.org/jira/browse/HIVE-8906 để biết thêm.

0

tôi đã giải quyết cùng một vấn đề bằng cách thêm dưới đây phụ thuộc vào /ql/pom.xml org.pentaho Pentaho-aggdesigner-thuật toán 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> 

và dưới kho đến /pom.xml theo các vị trí

<repository> 
     <id>conjars</id> 
     <name>Concurrent Conjars repository</name> 
     <url>http://conjars.org/repo</url> 
     <layout>default</layout> 
    </repository> 
Các vấn đề liên quan