Search in sources :

Example 6 with GuidePostsKey

use of org.apache.phoenix.schema.stats.GuidePostsKey in project phoenix by apache.

the class SkipScanBigFilterTest method testIntersect.

private void testIntersect(byte[][] regionBoundaries, byte[][] guidePosts) throws Exception {
    String ddl = "create table PERF.BIG_OLAP_DOC (\n" + "client_id                           integer not null\n" + ",customer_id                        integer\n" + ",time_id                            integer not null\n" + ",conversion_type_id                 integer not null\n" + ",device_type                        varchar(16)\n" + ",keyword_id                         bigint not null\n" + ",creative_id                        bigint not null\n" + ",placement_id                       bigint not null\n" + ",product_target_id                  bigint not null\n" + ",network                            varchar(7)\n" + ",impressions                        decimal(18, 4)\n" + ",publisher_clicks                   decimal(18, 4)\n" + ",publisher_cost                     decimal(18, 4)\n" + ",conversions                        decimal(18, 4)\n" + ",revenue                            decimal(18, 4)\n" + "    constraint perf_fact_pk primary key (client_id, time_id, conversion_type_id, device_type, keyword_id, creative_id, placement_id, product_target_id))SALT_BUCKETS=10";
    Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
    Connection conn = DriverManager.getConnection(getUrl(), props);
    StringBuilder ddlBuf = new StringBuilder(ddl + " SPLIT ON (");
    for (int i = 0; i < regionBoundaries.length; i++) {
        ddlBuf.append("?,");
    }
    ddlBuf.setCharAt(ddlBuf.length() - 1, ')');
    ;
    PreparedStatement stmt = conn.prepareStatement(ddlBuf.toString());
    int i = 1;
    for (byte[] boundary : regionBoundaries) {
        stmt.setBytes(i++, boundary);
    }
    stmt.execute();
    final PTable table = conn.unwrap(PhoenixConnection.class).getTable(new PTableKey(null, "PERF.BIG_OLAP_DOC"));
    GuidePostsInfoBuilder gpWriter = new GuidePostsInfoBuilder();
    for (byte[] gp : guidePosts) {
        gpWriter.addGuidePosts(gp, 1000);
    }
    GuidePostsInfo info = gpWriter.build();
    PhoenixConnection pConn = conn.unwrap(PhoenixConnection.class);
    pConn.addTable(table, System.currentTimeMillis());
    ((ConnectionlessQueryServicesImpl) pConn.getQueryServices()).addTableStats(new GuidePostsKey(table.getName().getBytes(), QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES), info);
    String query = "SELECT count(1) cnt,\n" + "       coalesce(SUM(impressions), 0.0) AS \"impressions\",\n" + "       coalesce(SUM(publisher_clicks), 0.0) AS \"pub_clicks\",\n" + "       coalesce(SUM(publisher_cost), 0.0) AS \"pub_cost\",\n" + "       coalesce(SUM(conversions), 0.0) AS \"conversions\",\n" + "       coalesce(SUM(revenue), 0.0) AS \"revenue\" \n" + "  FROM perf.big_olap_doc\n" + " WHERE time_id between 3000 and 3700\n" + "   AND network in ('SEARCH')\n" + "   AND conversion_type_id = 1\n" + "   AND client_id = 10724\n" + "   AND device_type in ('MOBILE','DESKTOP','OTHER','TABLET')\n" + "   AND keyword_id in (\n" + "613214369, 613217307, 613247509, 613248897, 613250382, 613250387, 613252322, 613260252, 613261753, 613261754, 613261759, \n" + "613261770, 613261873, 613261884, 613261885, 613261888, 613261889, 613261892, 613261897, 613261913, 613261919, 613261927, \n" + "614496021, 843606367, 843606967, 843607021, 843607033, 843607089, 1038731600, 1038731672, 1038731673, 1038731675, \n" + "1038731684, 1038731693, 1046990487, 1046990488, 1046990499, 1046990505, 1046990506, 1049724722, 1051109548, 1051311275, \n" + "1051311904, 1060574377, 1060574395, 1060574506, 1060574562, 1115915938, 1115915939, 1115915941, 1116310571, 1367495544, \n" + "1367495545, 1367497297, 1367497298, 1367497299, 1367497300, 1367497303, 1367497313, 1367497813, 1367497816, 1367497818, \n" + "1367497821, 1367497822, 1367497823, 1624976423, 1624976451, 1624976457, 3275636061, 3275640505, 3275645765, 3275645807, \n" + "3275649138, 3275651456, 3275651460, 3275651478, 3275651479, 3275654566, 3275654568, 3275654570, 3275654575, 3275659612, \n" + "3275659616, 3275659620, 3275668880, 3275669693, 3275675627, 3275675634, 3275677479, 3275677504, 3275678855, 3275679524, \n" + "3275679532, 3275680014, 3275682307, 3275682308, 3275682309, 3275682310, 3275682420, 3275682423, 3275682436, 3275682448, \n" + "3275682460, 3275682462, 3275682474, 3275684831, 3275688903, 3275694023, 3275694025, 3275694027, 3275695054, 3275695056,\n" + "3275695062, 3275699512, 3275699514, 3275699518, 3275701682, 3275701683, 3275701685, 3275701688, 3275703633, 3275703634, \n" + "3275703635, 3275703636, 3275703638, 3275703639, 3275704860, 3275704861, 3275764577, 3275797149, 3275798566, 3275798567, \n" + "3275798568, 3275798592, 3275931147, 3275942728, 3275945337, 3275945338, 3275945339, 3275945340, 3275945342, 3275945344, \n" + "3275946319, 3275946322, 3275946324, 3275946643, 3275949495, 3275949498, 3275949500, 3275950250, 3275955128, 3275955129, \n" + "3275955130, 3427017435, 3427017450, 3438304254, 3438304257, 3447068169, 3505227849, 3505227890, 3505556908, 3506351285, \n" + "3506351389, 3506351398, 3506351468, 3510037138, 3510038610, 3545590644, 3545594378, 3545595073, 3545595318, 3545595506, \n" + "3545597841, 3545598818, 3545599658, 3545599663, 3545601215, 3556080898, 3556080980, 3556080999, 3556081323, 3565122663, \n" + "3565122679, 3565122801, 3565122858, 3565122908, 3565122929, 3565122952, 3565122984, 3565123028, 3565123047, 3565123048, \n" + "3565123203, 3565123230, 3949988054, 3949988056, 3949988070, 3972992248, 3972992252, 3972992254, 3972992257, 3972992263, \n" + "3972992267, 3972992268, 3972992269, 3972992270, 3972992274, 3972992275, 3972992277, 3972992281, 3972992293, 3972992298, \n" + "3972992299, 3972992305, 3972992307, 3972992313, 3972992316, 3972992322, 3972992338, 3978471261, 3978471272, 4266318185, \n" + "4298107404, 4308853119, 4308853123, 4308853500, 4451174646, 4451174656, 4451174701, 4569827278, 4569827284, 4569827287, \n" + "4569827379, 4569827523, 4569827524, 4896589676, 4979049725, 5054587609, 5136433884, 5362640372, 5393109964, 5393405364, \n" + "5393405365, 5393405620, 5393405625, 5393405675, 5393405677, 5393405858, 5393405970)";
    QueryPlan plan = conn.createStatement().unwrap(PhoenixStatement.class).compileQuery(query);
    plan.iterator();
}
Also used : PhoenixConnection(org.apache.phoenix.jdbc.PhoenixConnection) GuidePostsInfoBuilder(org.apache.phoenix.schema.stats.GuidePostsInfoBuilder) GuidePostsKey(org.apache.phoenix.schema.stats.GuidePostsKey) Connection(java.sql.Connection) PhoenixConnection(org.apache.phoenix.jdbc.PhoenixConnection) GuidePostsInfo(org.apache.phoenix.schema.stats.GuidePostsInfo) PreparedStatement(java.sql.PreparedStatement) Properties(java.util.Properties) QueryPlan(org.apache.phoenix.compile.QueryPlan) PhoenixStatement(org.apache.phoenix.jdbc.PhoenixStatement) PTable(org.apache.phoenix.schema.PTable) ConnectionlessQueryServicesImpl(org.apache.phoenix.query.ConnectionlessQueryServicesImpl) PTableKey(org.apache.phoenix.schema.PTableKey)

Example 7 with GuidePostsKey

use of org.apache.phoenix.schema.stats.GuidePostsKey in project phoenix by apache.

the class ConnectionQueryServicesImpl method ensureLocalIndexTableDropped.

private boolean ensureLocalIndexTableDropped(byte[] physicalTableName, long timestamp) throws SQLException {
    HTableDescriptor desc = null;
    boolean wasDeleted = false;
    try (HBaseAdmin admin = getAdmin()) {
        try {
            desc = admin.getTableDescriptor(physicalTableName);
            for (byte[] fam : desc.getFamiliesKeys()) {
                this.tableStatsCache.invalidate(new GuidePostsKey(physicalTableName, fam));
            }
            final ReadOnlyProps props = this.getProps();
            final boolean dropMetadata = props.getBoolean(DROP_METADATA_ATTRIB, DEFAULT_DROP_METADATA);
            if (dropMetadata) {
                List<String> columnFamiles = new ArrayList<String>();
                for (HColumnDescriptor cf : desc.getColumnFamilies()) {
                    if (cf.getNameAsString().startsWith(QueryConstants.LOCAL_INDEX_COLUMN_FAMILY_PREFIX)) {
                        columnFamiles.add(cf.getNameAsString());
                    }
                }
                for (String cf : columnFamiles) {
                    admin.deleteColumn(physicalTableName, cf);
                }
                clearTableRegionCache(physicalTableName);
                wasDeleted = true;
            }
        } catch (org.apache.hadoop.hbase.TableNotFoundException ignore) {
        // Ignore, as we may never have created a view index table
        }
    } catch (IOException e) {
        throw ServerUtil.parseServerException(e);
    }
    return wasDeleted;
}
Also used : GuidePostsKey(org.apache.phoenix.schema.stats.GuidePostsKey) HColumnDescriptor(org.apache.hadoop.hbase.HColumnDescriptor) ArrayList(java.util.ArrayList) IOException(java.io.IOException) PhoenixIOException(org.apache.phoenix.exception.PhoenixIOException) HTableDescriptor(org.apache.hadoop.hbase.HTableDescriptor) ReadOnlyProps(org.apache.phoenix.util.ReadOnlyProps) HBaseAdmin(org.apache.hadoop.hbase.client.HBaseAdmin)

Aggregations

GuidePostsKey (org.apache.phoenix.schema.stats.GuidePostsKey)7 PTable (org.apache.phoenix.schema.PTable)4 PhoenixConnection (org.apache.phoenix.jdbc.PhoenixConnection)3 PTableKey (org.apache.phoenix.schema.PTableKey)2 GuidePostsInfo (org.apache.phoenix.schema.stats.GuidePostsInfo)2 ReadOnlyProps (org.apache.phoenix.util.ReadOnlyProps)2 IOException (java.io.IOException)1 Connection (java.sql.Connection)1 PreparedStatement (java.sql.PreparedStatement)1 ResultSet (java.sql.ResultSet)1 ArrayList (java.util.ArrayList)1 Properties (java.util.Properties)1 TreeSet (java.util.TreeSet)1 HColumnDescriptor (org.apache.hadoop.hbase.HColumnDescriptor)1 HTableDescriptor (org.apache.hadoop.hbase.HTableDescriptor)1 HBaseAdmin (org.apache.hadoop.hbase.client.HBaseAdmin)1 Scan (org.apache.hadoop.hbase.client.Scan)1 MutationPlan (org.apache.phoenix.compile.MutationPlan)1 PostDDLCompiler (org.apache.phoenix.compile.PostDDLCompiler)1 QueryPlan (org.apache.phoenix.compile.QueryPlan)1