public void createHbaseIndexTableIfNotExists(@NotEmpty final String dataFeed, @NotEmpty final String zkQuorum,
@NotEmpty final String zkPort, @NotEmpty final String zkZnodeParent, @NotEmpty final String version) {
final String tableName = getHoodieHbaseIndexTableName();
final String family = "_s";
final org.apache.hadoop.conf.Configuration hbaseConfig = new org.apache.hadoop.conf.Configuration();
hbaseConfig.set("hbase.zookeeper.quorum", zkQuorum);
hbaseConfig.set("hbase.zookeeper.property.clientPort", zkPort);
hbaseConfig.set("zookeeper.znode.parent", zkZnodeParent);
try {
try (final Connection connection = ConnectionFactory.createConnection(hbaseConfig)) {
if (!connection.getAdmin().tableExists(TableName.valueOf(tableName))) {
final HTableDescriptor tableDesc = new HTableDescriptor(TableName.valueOf(tableName));
final HColumnDescriptor familyDesc = new HColumnDescriptor(Bytes.toBytes(family));
familyDesc.setBloomFilterType(BloomType.ROW);
familyDesc.setCompressionType(Compression.Algorithm.SNAPPY);
tableDesc.addFamily(familyDesc);
connection.getAdmin().createTable(tableDesc);
log.info("Created HBase table {} with family {}", tableName, family);
} else {
log.debug("HBase table {} exists", tableName);
}
}
} catch (IOException e) {
log.error("Error creating HBase table {} ", tableName, e);
throw new JobRuntimeException(e);
}
}
}