分享

java程序访问hive报错

BB_BDATA 2018-10-19 18:51:00 发表于 疑问解答 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 4628
各位大神,今日写了个java组件,用于读取hive,在本地可以正常访问hive服务器,结果也正常,但是打包后,到linux下报错,提示信息如下:
java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:191)
        at com.eb.receng.javaalone.hive2hdfs.JDBCToHiveUtils.getConnnection(JDBCToHiveUtils.java:20)
        at com.eb.receng.javaalone.hive2hdfs.Hive2Hdfs.main(Hive2Hdfs.java:31)


用的maven,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/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

        <groupId>com.eb.receng.javaalone</groupId>
        <artifactId>hive2hdfs</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>

        <name>developerComponent</name>
        <url>http://maven.apache.org</url>

        <properties>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
        <dependencies>
                <!-- https://mvnrepository.com/artifa ... adoop/hadoop-common -->
                <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-common</artifactId>
                        <version>2.7.4</version>
                </dependency>
                <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-service -->
                <dependency>
                        <groupId>org.apache.hive</groupId>
                        <artifactId>hive-service</artifactId>
                        <version>2.3.2</version>
                </dependency>
                <!-- https://mvnrepository.com/artifa ... adoop/hadoop-client -->
                <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-client</artifactId>
                        <version>2.7.4</version>
                </dependency>
                <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
                <dependency>
                        <groupId>org.apache.hive</groupId>
                        <artifactId>hive-jdbc</artifactId>
                        <version>2.3.2</version>
                </dependency>

                <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-metastore -->
                <dependency>
                        <groupId>org.apache.hive</groupId>
                        <artifactId>hive-metastore</artifactId>
                        <version>2.3.2</version>
                </dependency>
                <!-- https://mvnrepository.com/artifa ... gdesigner-algorithm -->
                <dependency>
                        <groupId>org.pentaho</groupId>
                        <artifactId>pentaho-aggdesigner-algorithm</artifactId>
                        <version>5.1.5-jhyde</version>
                </dependency>
                <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-metastore -->
                <dependency>
                        <groupId>org.apache.hive</groupId>
                        <artifactId>hive-exec</artifactId>
                        <version>2.3.2</version>
                </dependency>
                <dependency>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                        <version>3.8.1</version>
                        <scope>test</scope>
                </dependency>
        </dependencies>

        <build>
                <plugins>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-compiler-plugin</artifactId>
                                <version>2.1</version>
                                <configuration>
                                        <source>1.6</source>
                                        <target>1.6</target>
                                </configuration>
                        </plugin>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-assembly-plugin</artifactId>
                                <configuration>
                                        <archive>
                                        </archive>
                                        <descriptorRefs>
                                                <descriptorRef>jar-with-dependencies</descriptorRef>
                                        </descriptorRefs>
                                </configuration>
                        </plugin>
                        <!-- <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-jar-plugin</artifactId>
                                <configuration>
                                        <archive>
                                                <manifest>
                                                        <addClasspath>true</addClasspath>
                                                        <classpathPrefix>lib/</classpathPrefix>
                                                </manifest>
                                        </archive>
                                </configuration>
                        </plugin> -->
                </plugins>
        </build>
</project>


晚上参考教程
https://blog.csdn.net/system1024/article/details/51966789
提示,可以把相关依赖jar都打入包呢,确实可行,但是这个包就太大了,一百多兆
能不能有其他方式,自动读取服务器下相关依赖包呢?
例如,尝试修改了环境变量:
.bash_profile:
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/home/hadoop/share/hadoop/common/hadoop-common-2.7.4.jar:$HIVE_HOME/lib/hive-exec-2.3.2.jar:$HIVE_HOME/lib/hive-jdbc-2.3.2.jar:$HIVE_HOME/lib/hive-metastore-2.3.2.jar:$HIVE_HOME/lib/hive-service-2.3.2.jar:$HIVE_HOME/lib/commons-logging-1.2.jar
但是效果不理想,还是报错
烦请各位大神,指教一二,这个问题应该怎么解决呢?

已有(1)人评论

跳转到指定楼层
jixianqiuxue 发表于 2018-10-19 20:34:05
所有的机器是否都配置了,配置后要生效。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条