Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与Apache Phoenix连接时出错_Java_Hbase_Phoenix - Fatal编程技术网

Java 与Apache Phoenix连接时出错

Java 与Apache Phoenix连接时出错,java,hbase,phoenix,Java,Hbase,Phoenix,我正在尝试使用Java API连接Apache Phoenix,代码如下: public class SampleHbasePhoenixConnection { static final String DB_URL = "jdbc:phoenix:hbaseServer:hbasePort:/"; public static void main(String args[]) throws Exception { Connection conn = null;

我正在尝试使用Java API连接Apache Phoenix,代码如下:

public class SampleHbasePhoenixConnection {
    static final String DB_URL = "jdbc:phoenix:hbaseServer:hbasePort:/";
    public static void main(String args[]) throws Exception {
        Connection conn = null;
        Statement st = null;
        try {
            Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
            System.out.println("Connecting to database..");
            conn = DriverManager.getConnection(DB_URL);
            System.out.println("Creating statement...");
            st = conn.createStatement();
            String sql;
            sql = "SELECT top 10 * FROM HBaseTable";
            ResultSet rs = st.executeQuery(sql);
            rs.close();
            st.close();
            conn.close();
        } catch (SQLException se) {
            se.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (st != null)
                    st.close();
            } catch (SQLException se2) {
                se2.printStackTrace();
            }
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }
}
下面是我在pom.xml中添加的依赖项

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.phoenix</groupId>
            <artifactId>phoenix-core</artifactId>
            <version>4.0.0-incubating</version>
        </dependency>
                <dependency>
            <groupId>org.apache.phoenix</groupId>
            <artifactId>phoenix-core</artifactId>
            <version>5.0.0-HBase-2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.phoenix</groupId>
            <artifactId>phoenix</artifactId>
            <version>5.0.0-HBase-2.0</version>
            <type>pom</type>
        </dependency>

org.apache.hbase
hbase客户端
1.2.0
org.apache.phoenix
凤凰核心
4.0.0-孵化
org.apache.phoenix
凤凰核心
5.0.0-HBase-2.0
org.apache.phoenix
凤凰
5.0.0-HBase-2.0
聚甲醛
我使用的Hbase版本是“1.2.0-cdh5.12.0”。运行代码时,我遇到以下异常:

Exception in thread "main" com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/CellComparatorImpl
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2254)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3985)
    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4788)
    at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:241)
    at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:150)
    at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:221)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)
    at SampleHbaseConnection.main(SampleHbaseConnection.java:35)
Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/CellComparatorImpl
    at org.apache.phoenix.hbase.index.util.KeyValueBuilder.get(KeyValueBuilder.java:71)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.<init>(ConnectionQueryServicesImpl.java:398)
    at org.apache.phoenix.jdbc.PhoenixDriver$3.call(PhoenixDriver.java:248)
    at org.apache.phoenix.jdbc.PhoenixDriver$3.call(PhoenixDriver.java:241)
    at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4791)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3584)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2372)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2335)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2250)
    ... 8 more
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.CellComparatorImpl
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 17 more
线程“main”中的异常com.google.common.util.concurrent.ExecutionError:java.lang.NoClassDefFoundError:org/apache/hadoop/hbase/CellComparatorImpl 位于com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2254) 位于com.google.common.cache.LocalCache.get(LocalCache.java:3985) 位于com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4788) 位于org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:241) 位于org.apache.phoenix.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:150) 位于org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:221) 位于java.sql.DriverManager.getConnection(DriverManager.java:664) 位于java.sql.DriverManager.getConnection(DriverManager.java:270) 位于SampleHbaseConnection.main(SampleHbaseConnection.java:35) 原因:java.lang.NoClassDefFoundError:org/apache/hadoop/hbase/CellComparatorImpl 位于org.apache.phoenix.hbase.index.util.KeyValueBuilder.get(KeyValueBuilder.java:71) 位于org.apache.phoenix.query.connectionQueryServiceSiml。(connectionQueryServiceSiml.java:398) 位于org.apache.phoenix.jdbc.PhoenixDriver$3.call(PhoenixDriver.java:248) 位于org.apache.phoenix.jdbc.PhoenixDriver$3.call(PhoenixDriver.java:241) 位于com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4791) 位于com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3584) 位于com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2372) 位于com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2335) 位于com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2250) ... 8个以上 原因:java.lang.ClassNotFoundException:org.apache.hadoop.hbase.CellComparatorImpl 位于java.net.URLClassLoader.findClass(URLClassLoader.java:381) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 还有17个
我很少看到其他帖子,我只使用这些帖子创建了这个连接URL。我无法摆脱这个例外。有什么建议吗?

我猜您的4.0.0孵化版Phoenix Core与您的Hbase客户端版本不兼容

然而,您仍然有第二个版本的who看起来是兼容的,但不幸的是,在运行时并没有将其作为第一个版本

只需删除此依赖项:

    <dependency>
        <groupId>org.apache.phoenix</groupId>
        <artifactId>phoenix-core</artifactId>
        <version>4.0.0-incubating</version>
    </dependency>

org.apache.phoenix
凤凰核心
4.0.0-孵化
如果这还不够,请尝试将Hbase客户端版本升级到2.1