【问题标题】:Add column family to the existing hbase table from spark scala shell从 spark scala shell 将列族添加到现有的 hbase 表
【发布时间】:2018-10-24 18:02:07
【问题描述】:

我在 hbase 中有一个包含 2 个列族 (cf1,cf2) 的表(测试),现在我想从 spark shell 向 hbase 中的现有表添加一个列族。我尝试使用以下语句,但它说该表已经存在

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)

有没有办法使用 scala 从 spark shell 向 hbase 中的现有测试表添加列族(cf3)?

提前致谢。

【问题讨论】:

    标签: scala apache-spark hbase


    【解决方案1】:

    您需要先禁用该表。然后添加 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多