Phoenix使用JAVA编程连接HBase-0.96.0

本文介绍如何使用Phoenix连接HBase,并通过Java代码创建、删除表,插入记录及查询数据的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,需要将《使用Phoenix连接HBase-0.96.0》中编译产生的phoenix-2.2.0-SNAPSHOT-client.jar文件添加到工程的classpath中。然后编写程序连接,一个简单的实例程序如下:

public class PhoenixClient {
    private String url = "jdbc:phoenix:l-datalog1.data.cn1,l-datalog2.data.cn1,l-datalog3.data.cn1";
    private String driver = "com.salesforce.phoenix.jdbc.PhoenixDriver";
    private Connection connection = null;

    public PhoenixClient() {
        try {
            Class.forName(driver);
            connection = DriverManager.getConnection(url);
            System.out.println("Connect HBase success..");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void close() {
        if (connection != null) {
            try {
                connection.close();
            } catch (Exception e) {
            } finally {
                connection = null;
            }
        }
    }

    public void createTable() {
        String sql = "create table IF NOT EXISTS phoenix_test(stuid integer not null primary key,name VARCHAR,age integer,score integer,classid integer)";
        try {
            Statement statement = connection.createStatement();
            statement.executeUpdate(sql);
            connection.commit();
            System.out.println("create table success: " + sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void deleteTable() {
        String sql = "drop table if exists pho_test";
        try {
            Statement statement = connection.createStatement();
            statement.executeUpdate(sql);
            connection.commit();
            System.out.println("delete table success: " + sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void insertRecord() {
        String sql = "upsert into phoenix_test(stuid,name,age,score,classid) values l (?,?,?,?,?)";
        try {
            PreparedStatement statement = connection.prepareStatement(sql);
            Random random = new Random();
            for (int i = 1; i <= 100; i++) {
                statement.setInt(1,i);
                statement.setString(2,"phoenix_test" + i);
                statement.setInt(3, random.nextInt(18));
                statement.setInt(4, random.nextInt(100));
                statement.setInt(5,random.nextInt(3));
                statement.execute();
            }
            connection.commit();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void selectRecord() {
        String sql = "select stuid,name,age,score,classid from phoenix_test";
        ResultSet resultSet = null;
        try {
            Statement statement = connection.createStatement();
            resultSet = statement.executeQuery(sql);
            while (resultSet != null && resultSet.next()) {
                System.out.println("stuid: " + resultSet.getString(1) + "\tname: " + resultSet.getString(2)
                 + "\tage: " + resultSet.getString(3) + "\tscore: " + resultSet.getString(4) + "\tclassid: " + resultSet.getString(5));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        PhoenixClient client = new PhoenixClient();
        client.createTable();
        client.insertRecord();
        client.selectRecord();
        client.deleteTable();
    }
}
注:代码中的l-datalog1.data.cn1,l-datalog2.data.cn1,l-datalog3.data.cn1是zookeeper的地址

转载请注明出处:http://blog.csdn.net/iAm333

<think>嗯,用户遇到了一个Java程序运行时的错误,具体是执行`java -jar hbase-manager-admin-2.0.9.jar`时提示无法访问jar文件。首先,我需要分析可能的原因。 用户给出的路径是`~/software/hbase-manager-2.0.8-hbase-2.x/`,但尝试运行的jar文件版本是2.0.9,而目录名是2.0.8。这可能是一个版本不匹配的问题,用户可能下载了不同版本的jar文件,或者目录名没有更新。这时候需要检查文件名是否正确,是否存在拼写错误或者版本号不一致的情况。 接下来,用户执行命令的当前目录是否正确?用户显示的路径是在`hbase-manager-2.0.8-hbase-2.x`目录下,但可能该目录下并没有hbase-manager-admin-2.0.9.jar文件。这时候需要使用`ls`命令来确认该文件是否存在,或者是否有权限问题。 另外,文件权限也是一个常见的问题。如果jar文件没有可读权限,Java无法读取它,导致错误。这时候需要检查文件的权限设置,使用`ls -l`查看,并用`chmod`修改权限。 还有可能是文件损坏,虽然可能性较低,但如果用户下载过程中出现问题,可能导致jar文件不完整。这时候可以重新下载文件,或者检查文件的哈希值是否匹配。 综合这些可能性,我应该分步骤引导用户检查文件名、路径、权限以及文件完整性。同时,提醒用户注意版本号和目录结构的一致性,避免因路径错误导致的问题。需要确保用户能够逐步排查,找到具体原因,并给出相应的解决命令,比如ls、pwd、chmod等,帮助用户自己解决问题。</think>你遇到的错误信息 `Error: Unable to access jarfile hbase-manager-admin-2.0.9.jar` Java 无法找到或访问指定的 JAR 文件。以下是逐步排查和解决的建议: --- ### **1. 检查文件名和路径** - **现象分析**: 当前目录是 `hbase-manager-2.0.8-hbase-2.x`,但尝试运行的 JAR 文件版本为 `2.0.9`,可能存在文件名或路径不匹配。 - **操作步骤**: 在终端输入以下命令,确认 JAR 文件是否存在: ```bash ls -l hbase-manager-admin-*.jar ``` - 如果输出为空,说明文件不存在。 - 如果文件名是 `hbase-manager-admin-2.0.8.jar`,需修改命令中的版本号。 --- ### **2. 确认当前工作目录** - **现象分析**: 错误可能源于未在 JAR 文件所在目录下执行命令。 - **操作步骤**: 输入 `pwd` 确认当前目录是否为 `~/software/hbase-manager-2.0.8-hbase-2.x`。 如果不是,需切换到正确目录: ```bash cd ~/software/hbase-manager-2.0.8-hbase-2.x ``` --- ### **3. 检查文件权限** - **现象分析**: 如果 JAR 文件权限不足,Java 无法读取- **操作步骤**: 赋予文件可读权限: ```bash chmod +r hbase-manager-admin-2.0.9.jar ``` --- ### **4. 验证文件完整性** - **现象分析**: 文件可能因下载不完整或损坏导致无法访问。 - **操作步骤**: 重新下载 JAR 文件,或通过校验哈希值(如 MD5/SHA1)验证文件完整性。 --- ### **5. 指定绝对路径运行(备用方案)** 如果上述步骤无效,可尝试直接指定 JAR 文件的绝对路径: ```bash java -jar ~/software/hbase-manager-2.0.8-hbase-2.x/hbase-manager-admin-2.0.9.jar ``` --- ### **总结** 常见原因优先级排序: 1. **文件名或路径错误**(如版本号 `2.0.8` vs `2.0.9`) 2. **文件未正确下载或缺失** 3. **权限不足** 请按顺序排查,通常可解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值