Phoenix-基于HBase的低延迟操作 头歌——答案

简介: Phoenix-基于HBase的低延迟操作 头歌——答案

第1关:Phoenix初识

package com.educoder.bigData.sparksql4;
import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.SQLException;
public class Case1 {  
    static {  
        try {  
            Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");  
        } catch (ClassNotFoundException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
    }
    public static void createEducoderTable1() {  
        Connection connection = null;  
        try {  
            connection = DriverManager.getConnection("jdbc:phoenix:127.0.0.1:2181");  
            connection.createStatement().execute(  
                    "CREATE TABLE EDUCODER_TABLE1 (ID BIGINT not null primary key, info.BEGINTIME VARCHAR, ENDTIME VARCHAR, SALARY INTEGER, CITY VARCHAR)DATA_BLOCK_ENCODING='DIFF',VERSIONS=3,BLOCKSIZE='32000',MAX_FILESIZE=10000000");  
            connection.commit();  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        finally {  
            if(connection != null) {  
                try {  
                    connection.close();  
                } catch (SQLException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
    public static void createEducoderTable2() {  
        Connection connection = null;  
        try {  
            connection = DriverManager.getConnection("jdbc:phoenix:127.0.0.1:2181");  
            connection.createStatement().execute(  
                    "CREATE TABLE \"educoder_table2\" (\"id\" BIGINT not null primary key, \"info\".\"begintime\" VARCHAR, \"endtime\" VARCHAR, \"salary\" INTEGER, \"city\" VARCHAR)COMPRESSION='GZ',VERSIONS=5,BLOCKSIZE='65536',MAX_FILESIZE=20000000");  
            connection.commit();  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        finally {  
            if(connection != null) {  
                try {  
                    connection.close();  
                } catch (SQLException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }  
            }  
        }  
    }
}


第2关 Phoenix 查询和更新

package com.educoder.bigData.sparksql4;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class Test2 extends InitHdb2{
    public static void main(String[] args) throws SQLException {
        Connection connection = null;
        try {
            connection = DriverManager.getConnection("jdbc:phoenix:127.0.0.1:2181");
            connection.createStatement().executeUpdate("UPSERT INTO EDUCODER_TABLE1 VALUES('20190615','20190915', 1, 20, '上海') ON DUPLICATE KEY UPDATE SALARY = SALARY + 20");
            connection.createStatement().executeUpdate("UPSERT INTO EDUCODER_TABLE1 VALUES('20190618','20190918', 2, 10, '北京') ON DUPLICATE KEY UPDATE SALARY = SALARY + 20");
            connection.commit();
            queryTable(connection,"EDUCODER_TABLE1");
            connection.createStatement().executeUpdate("UPSERT INTO \"educoder_table2\"  SELECT * FROM EDUCODER_TABLE1 ");
            connection.commit();
            queryTable(connection,"educoder_table2");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally {
            if(connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
    private static void queryTable(Connection connection, String tableName) throws SQLException {
        ResultSet executeQuery = connection.createStatement().executeQuery("select * from \""+tableName+"\"");
        ResultSetMetaData metaData = executeQuery.getMetaData();
        int n = 0;
        while (executeQuery.next()) {
            System.out.println(tableName + "第" + ++n + "条数据:");
            for (int j = 0; j < metaData.getColumnCount(); j++) {
                String col_name = metaData.getColumnName(j + 1);
                Object value = executeQuery.getObject(col_name);
                System.out.print(col_name + ":" + value);
                if(j != metaData.getColumnCount() -1) {
                    System.out.print(",");
                }
                else {
                    System.out.println();
                }
            }
        }
    }
}


第3关 Phoenix 二级索引

package com.educoder.bigData.sparksql4;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class Test3 extends InitHdb3{
  public static void main(String[] args) throws SQLException {
    Connection connection = null;
    /********* Begin *********/
        String sql = "select * from my_index limit 10";         
        connection = DriverManager.getConnection("jdbc:phoenix:127.0.0.1:2181");
        connection.createStatement().executeUpdate("CREATE  INDEX my_index ON EDUCODER_TABLE1 (salary) ");  
    /********* End *********/
    queryTable(sql, connection);
  }
  public static void queryTable(String sql,Connection connection) throws SQLException {
    ResultSet executeQuery = connection.createStatement().executeQuery(sql);
    ResultSetMetaData metaData = executeQuery.getMetaData();
    System.out.println("索引表数据:");
    while (executeQuery.next()) {
      for (int j = 0; j < metaData.getColumnCount(); j++) {
        String col_name = metaData.getColumnName(j + 1);
        Object value = executeQuery.getObject(col_name);
        System.out.print(col_name + ":" + value);
        if(j != metaData.getColumnCount() -1) {
          System.out.print(",");
        }
        else {
          System.out.println();
        }
      }
    }
  }
}


第4关 Phoenix Spark操作

package com.educoder.bigData.sparksql4;
import java.util.Arrays;
import org.apache.spark.api.java.JavaRDD;  
import org.apache.spark.api.java.JavaSparkContext;  
import org.apache.spark.sql.Dataset;  
import org.apache.spark.sql.Row;  
import org.apache.spark.sql.SaveMode;  
import org.apache.spark.sql.SparkSession;
public class Case4 {
    public static void case4(TableVo1 vo) {  
        SparkSession spark = SparkSession.builder().appName("test1").master("local").getOrCreate();  
        JavaSparkContext context = JavaSparkContext.fromSparkContext(spark.sparkContext());  
        JavaRDD<TableVo1> parallelize = context.parallelize(Arrays.asList(vo));  
        Dataset<Row> df = spark.createDataFrame(parallelize, TableVo1.class);  
        df.write().mode(SaveMode.Overwrite).format("org.apache.phoenix.spark").option("zkUrl", "127.0.0.1:2181").option("table", "OUTPUT_TABLE").save();  
        spark.read().option("table", "OUTPUT_TABLE").option("zkUrl", "127.0.0.1:2181")  
        .format("org.apache.phoenix.spark").load().show();  
    }  
}
相关实践学习
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
4月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
82 0
|
7月前
|
Shell 分布式数据库 Apache
Hbase常用shell操作
Hbase常用shell操作
316 1
|
7月前
|
Java Shell 分布式数据库
HBase高级操作
HBase高级操作
199 0
|
4月前
|
分布式计算 Hadoop Shell
|
4月前
|
存储 分布式计算 分布式数据库
对给定的数据利用MapReduce编程实现数据的清洗和预处理,编程实现数据存储到HBase数据库,实现数据的增删改查操作接口
对给定的数据利用MapReduce编程实现数据的清洗和预处理,编程实现数据存储到HBase数据库,实现数据的增删改查操作接口
27 0
|
4月前
|
SQL 存储 NoSQL
分布式NoSQL列存储数据库Hbase操作(二)
分布式NoSQL列存储数据库Hbase操作(二)
114 0
|
4月前
|
SQL 分布式数据库 HIVE
Hbase二级索引_Hive on Hbase 及phoenix详解
Hbase二级索引_Hive on Hbase 及phoenix详解
43 0
|
5月前
|
分布式计算 分布式数据库 Hbase
99 MapReduce操作Hbase
99 MapReduce操作Hbase
42 0
|
7月前
|
Shell 分布式数据库 Hbase
Hbase shell管理操作
Hbase shell管理操作
52 0
|
8月前
|
Shell 分布式数据库 数据库
Hbase Shell操作
Hbase Shell操作
133 0