将 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();
}
}
我不是来自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();
}
}