将 Web 方法写入 Hbase

Writing Web methods to Hbase

我不是来自Java,所以我的问题可能很简单,但我需要明确的步骤来实现。

现有项目:连接到 Oracle 数据库以获取特定属性文件并将日志信息插入某些 table 的 Web 方法。

问题:很多时候数据库出现故障,因此延迟执行。

新要求: 我们必须用 Hbase 替换现有的 oracle table。我已经使用 Pig 将代码写入文件写入 Hbase。但是我真的不知道如何将实时数据写入Hbase。

我发现使用 Java 客户端或 Thrift 连接我可以编写。我需要非常详细的解释。我必须提交一个项目。请帮帮我。

您了解面向行的数据库并且 Hbase 是面向列的database.But我们有 apache Phoenix。

Apache Phoenix 是 HBase 上的关系数据库层,作为客户端嵌入式 JDBC 驱动程序交付,目标是对 HBase 数据进行低延迟查询。 Apache Phoenix 获取您的 SQL 查询,将其编译成一系列 HBase 扫描,并编排这些扫描的 运行 以生成常规 JDBC 结果集。 table 元数据存储在 HBase table 中并进行了版本控制,因此对先前版本的快照查询将自动使用正确的模式。直接使用 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();
    }
}