java—将web方法写入hbase

toe95027  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(366)

我不是来自java,所以我的问题可能很简单,但我需要清楚的步骤来实现。
现有项目:webmethods连接到oracle数据库,获取某些属性文件并将日志信息插入某些表中。
问题:很多时候,数据库宕机,所以执行延迟。
新要求:我们必须用hbase替换现有的oracle表。我已经用pig将代码写入hbase。但我真的不知道如何将实时数据写入hbase。
我发现使用java客户机或thrift连接我可以编写。我需要非常详细的解释。我得申请一个项目。请帮帮我。

2g32fytz

2g32fytz1#

你知道面向行的数据库,hbase是面向列的数据库,但我们有apachephoenix。
apachephoenix是一个基于hbase的关系数据库层,作为一个客户机嵌入式jdbc驱动程序提供,针对hbase数据的低延迟查询。apachephoenix接受sql查询,将其编译成一系列hbase扫描,并协调这些扫描的运行以生成常规的jdbc结果集。表元数据存储在hbase表中并进行版本控制,以便在以前版本上的快照查询将自动使用正确的模式。直接使用hbase api以及协处理器和自定义过滤器,可以使小查询的性能达到毫秒级,而数千万行的性能则达到秒级。
这很容易解决你的问题。http://phoenix.apache.org/

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.Statement;

public class test {

    public static void main(String[] args) throws SQLException {
        Statement stmt = null;
        ResultSet rset = null;

        Connection con = DriverManager.getConnection("jdbc:phoenix:[zookeeper]");
        stmt = con.createStatement();

        stmt.executeUpdate("create table test (mykey integer not null primary key, mycolumn varchar)");
        stmt.executeUpdate("upsert into test values (1,'Hello')");
        stmt.executeUpdate("upsert into test values (2,'World!')");
        con.commit();

        PreparedStatement statement = con.prepareStatement("select * from test");
        rset = statement.executeQuery();
        while (rset.next()) {
            System.out.println(rset.getString("mycolumn"));
        }
        statement.close();
        con.close();
    }
}

相关问题