更新时间:2024-08-05 GMT+08:00
Phoenix SQL查询样例介绍
功能简介
Phoenix是构建在HBase之上的一个SQL中间层,提供一个客户端可嵌入的JDBC驱动,Phoenix查询引擎将SQL输入转换为一个或多个HBase scan,编译并执行扫描任务以产生一个标准的JDBC结果集。
代码样例
- 客户端“hbase-example/conf/hbase-site.xml”中配置存放查询中间结果的临时目录,如果客户端程序在Linux上执行临时目录就配置Linux上的路径,如果客户端程序在Windows上执行临时目录则配Windows上的路径。
<property> <name>phoenix.spool.directory</name> <value>[1]查询中间结果的临时目录</value> </property>
- JAVA样例:使用JDBC接口访问HBase
public String getURL(Configuration conf) { String phoenix_jdbc = "jdbc:phoenix"; String zkQuorum = conf.get("hbase.zookeeper.quorum"); return phoenix_jdbc + ":" + zkQuorum; } public void testSQL() { String tableName = "TEST"; // Create table String createTableSQL = "CREATE TABLE IF NOT EXISTS TEST(id integer not null primary key, name varchar, account char(6), birth date)"; // Delete table String dropTableSQL = "DROP TABLE TEST"; // Insert String upsertSQL = "UPSERT INTO TEST VALUES(1,'John','100000', TO_DATE('1980-01-01','yyyy-MM-dd'))"; // Query String querySQL = "SELECT * FROM TEST WHERE id = ?"; // Create the Configuration instance Configuration conf = getConfiguration(); // Get URL String URL = getURL(conf); Connection conn = null; PreparedStatement preStat = null; Statement stat = null; ResultSet result = null; try { // Create Connection conn = DriverManager.getConnection(URL); // Create Statement stat = conn.createStatement(); // Execute Create SQL stat.executeUpdate(createTableSQL); // Execute Update SQL stat.executeUpdate(upsertSQL); // Create PrepareStatement preStat = conn.prepareStatement(querySQL); conn.commit(); // Execute query preStat.setInt(1,1); result = preStat.executeQuery(); // Get result while (result.next()) { int id = result.getInt("id"); String name = result.getString(1); } } catch (Exception e) { // handler exception } finally { if(null != result){ try { result.close(); } catch (Exception e2) { // handler exception } } if(null != stat){ try { stat.close(); } catch (Exception e2) { // handler exception } } if(null != conn){ try { conn.close(); } catch (Exception e2) { // handler exception } } } }
注意事项
- 需要在“hbase-site.xml”中配置用于存放中间查询结果的临时目录路径,该目录大小限制可查询结果集大小;
- Phoenix实现了大部分java.sql接口,SQL紧跟ANSI SQL标准。
父主题: HBase应用开发常见问题