Java 包org.apache.hadoop.hive.ql.exec.vector不存在
我正在尝试使用hiveudf和UDAF,到目前为止,我在VM上使用命令行中的maven进行了很好的管理,这基本上是由一个非常熟悉的人很好地设置的。我不熟悉Java(项目,不太熟悉语言),但我至少可以看到我目前的问题是什么。我不知道为什么会发生这种情况,以及如何解决它 所以 我的问题是,无论出于什么原因,在跑步时Java 包org.apache.hadoop.hive.ql.exec.vector不存在,java,maven,hadoop,Java,Maven,Hadoop,我正在尝试使用hiveudf和UDAF,到目前为止,我在VM上使用命令行中的maven进行了很好的管理,这基本上是由一个非常熟悉的人很好地设置的。我不熟悉Java(项目,不太熟悉语言),但我至少可以看到我目前的问题是什么。我不知道为什么会发生这种情况,以及如何解决它 所以 我的问题是,无论出于什么原因,在跑步时 mvn install 编译器找不到任何过去的类 /org/apache/hadoop/hive/ql/exec 它可以在“exec”文件夹中找到所有类,但在“exec”中嵌套的任何
mvn install
编译器找不到任何过去的类
/org/apache/hadoop/hive/ql/exec
它可以在“exec”文件夹中找到所有类,但在“exec”中嵌套的任何子文件夹中都找不到任何类。我不明白为什么会这样。这是我的POM文件
<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/maven-v4_0_0.xsd">
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.8</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.matthewrathbone.example.RawMapreduce</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<modelVersion>4.0.0</modelVersion>
<groupId>com.matthewrathbone.example</groupId>
<artifactId>hive-extensions</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>hive-extensions</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.0.0-mr1-cdh4.3.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>0.10.0-cdh4.3.1</version>
<scope>provided</scope>
</dependency>
<!-- TEST DEPENDENCIES -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-test</artifactId>
<version>2.0.0-mr1-cdh4.1.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
</project>
org.apache.maven.plugins
maven surefire插件
2.8
maven汇编插件
com.matthewrathbone.example.RawMapreduce
带有依赖项的jar
4.0.0
com.matthewrathbone.example
蜂巢扩展
罐子
1.0-快照
蜂巢扩展
http://maven.apache.org
org.apache.hadoop
hadoop客户端
2.0.0-mr1-cdh4.3.1
假如
org.apache.hive
蜂巢执行器
0.10.0-cdh4.3.1
假如
org.apache.commons
公地io
1.3.2
测试
commons httpclient
commons httpclient
3.1
测试
org.apache.hadoop
hadoop测试
2.0.0-mr1-cdh4.1.2
测试
朱尼特
朱尼特
4.8.2
测试
克劳德拉
https://repository.cloudera.com/artifactory/cloudera-repos/
我所犯的许多错误中有一个例子就是在标题中vector'是位于/org/apache/hadoop/hive/ql/exec
中的文件夹
据我所知,hive exec.jar
文件在我的POM文件中被列为一个依赖项,因此我不确定为什么编译器在查找其中包含的所有类时遇到问题(如前所述,它可以找到一些)
基本上,我想做的是合并一个内置UDAF作为我自己的临时函数,这样我就可以绕过Hive对“SELECT”语句中的子查询的限制。更具体地说,我做了一些调整,并最终缩小了范围,使之成为编译器正在寻找
类向量化dudafs
,而事实证明,我的hive exec
.jar版本没有。。。。因此,它找不到它,因为它实际上不存在…您是否从Maven assembly构建的JAR运行com.matthewrathbone.example.RawMapreduce
?如果是这样,我不确定hiveexec
是否在组装好的JAR中,因为hiveexec
的依赖范围是“provided
”。如果是这种情况,请尝试删除为该库提供的和hadoop client
。@AlexandreDupriez,这是毫无疑问的。我已经在顶部创建了自己的包名,当我运行mvn安装时,该包将在生成的.jar文件中创建。也就是说,我使用的是hive-extensions-1.0-SNAPSHOT.jar