harbby / presto-connectors

facebook presto connectors
Apache License 2.0
49 stars 22 forks source link

create hbase table is not support namespace,is only support namespace is default #15

Closed 597365581 closed 4 years ago

597365581 commented 4 years ago

in package com.facebook.presto.hbase ,HbaseClient.java create hbase table is not support namespace,is only support namespace is default public HbaseTable createTable(ConnectorTableMetadata meta) { ...... // Create the Hbase table if it does not exist (for 'external' table) if (!tableManager.exists(table.getFullTableName())) { try { tableManager.createHbaseTable(table.getFullTableName(), familys); } catch (Exception e) { metaManager.deleteTableMetadata(table.getSchemaTableName()); throw e; } }

    return table;

....... }

597365581 commented 4 years ago

in package com.facebook.presto.hbase ,HbaseClient.java ‘s createTable method need to modify as below. public HbaseTable createTable(ConnectorTableMetadata meta) { LOG.info("ConnectorTableMetadata :" + meta.toString());

    // Validate the DDL is something we can handle
    validateCreateTable(meta);

    Map<String, Object> tableProperties = meta.getProperties();
    String rowIdColumn = getRowIdColumn(meta);

    // Get the list of column handles
    List<HbaseColumnHandle> columns = getColumnHandles(meta, rowIdColumn);

    // Create the HbaseTable object
    HbaseTable table = new HbaseTable(
            meta.getTable().getSchemaName(),
            meta.getTable().getTableName(),
            columns,
            rowIdColumn,
            HbaseTableProperties.isExternal(tableProperties),
            HbaseTableProperties.getScanAuthorizations(tableProperties));

    // First, create the metadata
    metaManager.createTableMetadata(table);

    LOG.info("hbase table :" + table.toString());

    // Make sure the namespace exists
    tableManager.ensureNamespace(table.getSchema());

    // Set any locality groups on the data table
    Set<HColumnDescriptor> familys = getFamilys(tableProperties, table);
    //tableManager.setFamilys(table.getFullTableName(), familys);

    // Create the Hbase table if it does not exist (for 'external' table)

// add namespace String hbaseTableName = table.getSchema() + ":" + table.getTable(); if (!tableManager.exists(hbaseTableName)) { try { tableManager.createHbaseTable(hbaseTableName, familys); } catch (Exception e) { metaManager.deleteTableMetadata(table.getSchemaTableName()); throw e; } }

    return table;
}