Добавить семейство столбцов в существующую таблицу hbase из оболочки spark scala - PullRequest
0 голосов
/ 24 октября 2018

У меня есть таблица (test) в hbase с двумя семействами столбцов (cf1, cf2), теперь я хочу добавить семейство столбцов к существующей таблице в hbase из spark shell.Я попытался использовать приведенные ниже операторы, но он говорит, что таблица уже существует

import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.client.{HBaseAdmin,HTable,Put,Get}
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.hbase.{HBaseConfiguration, HTableDescriptor}
import org.apache.hadoop.hbase.client.HBaseAdmin
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HColumnDescriptor
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.hbase.client.Put
import org.apache.hadoop.hbase.client.HTable


val conf = HBaseConfiguration.create()
val admin = new HBaseAdmin(conf)
conf.set("hbase.rootdir","hdfs://")
conf.set("hbase.zookeeper.quorum","")
conf.setInt("hbase.zookeeper.property.clientPort", )

val tableName = "test"
val tableDesc = new HTableDescriptor(tableName)
tableDesc.addFamily(new HColumnDescriptor("cf3"))
admin.createTable(tableDesc)

Есть ли способ добавить семейство столбцов (cf3) к существующей тестовой таблице в hbase из spark shell, используя scala?

Заранее спасибо.

1 Ответ

0 голосов
/ 24 октября 2018

Вам нужно сначала отключить таблицу.Затем добавьте columnFamily и включите его обратно.

val conf = HBaseConfiguration.create()
val admin = new HBaseAdmin(conf)
conf.set("hbase.rootdir","hdfs://")
conf.set("hbase.zookeeper.quorum","")
conf.setInt("hbase.zookeeper.property.clientPort", )

val tableName = "test"
val table = TableName.valueOf(tableName)
admin.disableTable(table) 
admin.addColumn(table,new HColumnDescriptor("cf3"))
admin.enableTable(tableDesc)

В Java это будет эквивалентно следующему:

Configuration config = HBaseConfiguration.create();
Admin admin = new Admin(conf);
TableName table = TableName.valueOf("myTable");

admin.disableTable(table);

HColumnDescriptor cf1 = ...;
admin.addColumn(table, cf1);      // adding new ColumnFamily
HColumnDescriptor cf2 = ...;
admin.modifyColumn(table, cf2);    // modifying existing ColumnFamily

admin.enableTable(table);
...